我有一个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数组,但尝试了本页上的所有解决方案都无济于事。

然后我发现了这个问题和答案:如何向空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会为你工作。

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

我也遇到了同样的问题,我无法评论@Sven Marnach的回答(没有足够的代表性,天哪,我记得Stackoverflow第一次开始……)

将随机数列表添加到10 × 10矩阵中。

myNpArray = np.zeros([1, 10])
for x in range(1,11,1):
    randomList = [list(np.random.randint(99, size=10))]
    myNpArray = np.vstack((myNpArray, randomList))
myNpArray = myNpArray[1:]

使用np.zeros()创建一个包含1 x 10个零的数组。

array([[0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]])

然后使用np创建一个包含10个随机数的列表。random和赋值给randomList。 这个循环把它堆成10层高。我们只需要记住去掉第一个空项。

myNpArray

array([[31., 10., 19., 78., 95., 58.,  3., 47., 30., 56.],
       [51., 97.,  5., 80., 28., 76., 92., 50., 22., 93.],
       [64., 79.,  7., 12., 68., 13., 59., 96., 32., 34.],
       [44., 22., 46., 56., 73., 42., 62.,  4., 62., 83.],
       [91., 28., 54., 69., 60., 95.,  5., 13., 60., 88.],
       [71., 90., 76., 53., 13., 53., 31.,  3., 96., 57.],
       [33., 87., 81.,  7., 53., 46.,  5.,  8., 20., 71.],
       [46., 71., 14., 66., 68., 65., 68., 32.,  9., 30.],
       [ 1., 35., 96., 92., 72., 52., 88., 86., 94., 88.],
       [13., 36., 43., 45., 90., 17., 38.,  1., 41., 33.]])

在函数中:

def array_matrix(random_range, array_size):
    myNpArray = np.zeros([1, array_size])
    for x in range(1, array_size + 1, 1):
        randomList = [list(np.random.randint(random_range, size=array_size))]
        myNpArray = np.vstack((myNpArray, randomList))
    return myNpArray[1:]

一个7 × 7的数组,使用随机数0 - 1000

array_matrix(1000, 7)

array([[621., 377., 931., 180., 964., 885., 723.],
       [298., 382., 148., 952., 430., 333., 956.],
       [398., 596., 732., 422., 656., 348., 470.],
       [735., 251., 314., 182., 966., 261., 523.],
       [373., 616., 389.,  90., 884., 957., 826.],
       [587., 963.,  66., 154., 111., 529., 945.],
       [950., 413., 539., 860., 634., 195., 915.]])

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

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

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]]])