我有一个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])

当前回答

这是为人们使用numpy的ndarray。函数numpy.concatenate()也可以工作。

>>a = np.random.randint(0,9, size=(10,1,5,4))
>>a.shape
(10, 1, 5, 4)

>>b = np.random.randint(0,9, size=(15,1,5,4))
>>b.shape
(15, 1, 5, 4)

>>X = np.concatenate((a, b))
>>X.shape
(25, 1, 5, 4)

类似于vstack()

>>Y = np.vstack((a,b))
>>Y.shape
(25, 1, 5, 4)

其他回答

我在寻找一些略有不同的东西时发现了这个链接,如何开始将数组对象追加到空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

当您希望沿着一个现有的轴(按行)连接时,np。Vstack或np。Concatenate会为你工作。

有关连接操作的详细列表,请参阅官方文档。

试试下面的代码:

import numpy as np

a1 = np.array([])

n = int(input(""))

for i in range(0,n):
    a = int(input(""))
    a1 = np.append(a, a1)
    a = 0

print(a1)

你也可以用数组来代替a

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

numpy.append(M, a)

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

根据堆栈的方向,有很多方法可以将数组堆叠在一起。 例如,你可以考虑np.stack() (doc)、np.vstack() (doc)和np.hstack() (doc)。