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 数组
我想垂直附加在 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 数组