我有一个numpy_array。比如[a b c]。

然后我想将它与另一个NumPy数组连接起来(就像我们创建列表的列表一样)。如何创建包含NumPy数组的NumPy数组?

我试着做下面的事情,但没有任何运气

>>> M = np.array([])
>>> M
array([], dtype=float64)
>>> M.append(a,axis=0)
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
AttributeError: 'numpy.ndarray' object has no attribute 'append'
>>> a
array([1, 2, 3])

当前回答

In [1]: import numpy as np

In [2]: a = np.array([[1, 2, 3], [4, 5, 6]])

In [3]: b = np.array([[9, 8, 7], [6, 5, 4]])

In [4]: np.concatenate((a, b))
Out[4]: 
array([[1, 2, 3],
       [4, 5, 6],
       [9, 8, 7],
       [6, 5, 4]])

或:

In [1]: a = np.array([1, 2, 3])

In [2]: b = np.array([4, 5, 6])

In [3]: np.vstack((a, b))
Out[3]: 
array([[1, 2, 3],
       [4, 5, 6]])

其他回答

实际上,我们总是可以创建一个普通的numpy数组列表,然后进行转换。

In [1]: import numpy as np

In [2]: a = np.array([[1,2],[3,4]])

In [3]: b = np.array([[1,2],[3,4]])

In [4]: l = [a]

In [5]: l.append(b)

In [6]: l = np.array(l)

In [7]: l.shape
Out[7]: (2, 2, 2)

In [8]: l
Out[8]: 
array([[[1, 2],
        [3, 4]],

       [[1, 2],
        [3, 4]]])

错误消息说明了一切:NumPy数组没有append()方法。然而,有一个免费函数numpy.append():

numpy.append(M, a)

这将创建一个新数组,而不是原地改变M。注意,使用numpy.append()涉及复制两个数组。如果使用固定大小的NumPy数组,您将获得性能更好的代码。

我在寻找一些略有不同的东西时发现了这个链接,如何开始将数组对象追加到空numpy数组,但尝试了本页上的所有解决方案都无济于事。

然后我发现了这个问题和答案:如何向空numpy数组添加新行

要点如下:

“开始”你想要的数组的方法是: Arr = np.empty((0,3), int)

然后你可以像这样使用concatenate来添加行:

Arr = np。Concatenate ((arr, [[x, y, z]]),轴=0)

参见https://docs.scipy.org/doc/numpy/reference/generated/numpy.concatenate.html

你可以使用numpy.append()…

import numpy

B = numpy.array([3])
A = numpy.array([1, 2, 2])
B = numpy.append( B , A )

print B

> [3 1 2 2]

这将不会创建两个单独的数组,而是将两个数组追加到一个一维数组中。

In [1]: import numpy as np

In [2]: a = np.array([[1, 2, 3], [4, 5, 6]])

In [3]: b = np.array([[9, 8, 7], [6, 5, 4]])

In [4]: np.concatenate((a, b))
Out[4]: 
array([[1, 2, 3],
       [4, 5, 6],
       [9, 8, 7],
       [6, 5, 4]])

或:

In [1]: a = np.array([1, 2, 3])

In [2]: b = np.array([4, 5, 6])

In [3]: np.vstack((a, b))
Out[3]: 
array([[1, 2, 3],
       [4, 5, 6]])