最好收集列表中的值,并在最后执行一次连接或数组创建。在h = [np.zeros(4)]
for x in range(3):
x1 = some array of length of 4 returned from a previous function (3,5,6,7)
h = h.append(x1)
h = np.array(h)
# or h = np.vstack(h)
所有的concatenate/stack/array函数都有多个项的列表。追加到一个列表中比合并两个项目要快。在
======================
让我们一步一步地尝试你的方法:
^{pr2}$
在本例中,我一个接一个地添加(4,)个数组,仍然得到一个1d数组。在
如果我返回创建x1为2d(1,4):In [198]: h=np.zeros(4)
In [199]: x1=np.array([[6,3,6,7]])
In [200]: h1=np.concatenate((h,x1),axis=0)
...
ValueError: all the input arrays must have same number of dimensions
我马上就得到这个尺寸误差。在
在第二次迭代中得到错误的事实表明,第一次x1是(4,),但第二次是2d
当你有像这样的尺寸错误,检查形状。在
vstack根据需要向输入添加维度,因此您可以构建二维数组:In [207]: h=np.zeros(4)
In [208]: x1=np.array([3,5,6,7])
In [209]: h=np.vstack((h,x1))
In [210]: h
Out[210]:
array([[ 0., 0., 0., 0.],
[ 3., 5., 6., 7.]])
In [211]: x1=np.array([6,3,6,7])
In [212]: h=np.vstack((h,x1))
In [213]: h
Out[213]:
array([[ 0., 0., 0., 0.],
[ 3., 5., 6., 7.],
[ 6., 3., 6., 7.]])