Numpy 在行上循环追加二维数组

Numpy append 2D array in for loop over rows

我想垂直附加在 for 循环中创建的二维数组。
我尝试了 append 方法,但这不会垂直堆叠(我不想避免稍后重塑结果),我尝试了 vstack() 函数,但这不适用于空数组。 有谁知道如何解决这个问题?

import numpy as np
mat = np.array([])
for i in np.arange(3):
    val = np.random.rand(2, 2)
    mat = np.append(mat,val)

我可以想到以下解决方案:

for i in np.arange(3):
    val = np.random.rand(2, 2)
    if i==0:
        mat = val
    else:
        mat = np.vstack((mat,val))

有没有解决方案,我只附加值 'val' 而没有指定额外的 if-else 语句?

使用np.empty 初始化一个空数组并定义要追加的轴:

import numpy as np
mat = np.empty((0,2))
for i in np.arange(3):
    val = np.random.rand(2, 2)
    mat = np.append(mat,val, axis=0)
print(mat)

输出:

[[0.08527627 0.40567273]
 [0.39701354 0.72642426]
 [0.17540761 0.02579183]
 [0.76271521 0.83032347]
 [0.08105248 0.67986726]
 [0.48079453 0.37454798]]

但是,如我的评论所述,如果您需要多次附加,您应该考虑初始化一个正确大小的数组,然后使用 np.append() 或附加到列表来分配值相反(如果你不知道数组的大小)然后在

之后创建一个 numpy 数组