如何创建一个空数组,然后我可以hstack
使用另一个数组填充值?
例如在Matlab中,我可以执行以下操作:
a = [];
b = [10 20];
a = [a b];
并且会得到
a =
10 20
我正在寻找类似numpy的东西。我试过了
a = np.array([]);
b = np.array([10, 20]);
a = np.hstack((a, b)); # should be equal to `b`
但是这给了
ValueError:除了连接轴之外的所有输入数组维度必须完全匹配
答案 0 :(得分:2)
您可以resize
a
的维度与b
的{{3}}相匹配,并填写缺失的值。这会更改a
的大小并使用默认值填充np.floats
这是0.0
a = np.array([])
b = np.array([10, 20])
a.resize(b.shape)
np.hstack((a, b))
答案 1 :(得分:2)
将np.array([])
与hstack
一起使用对我有用。
In [11]: a = array([], dtype=int)
In [12]: b = array([10, 20])
In [13]: c = array([30, 40])
In [14]: a = hstack((a,b))
In [15]: a
Out[15]: array([10, 20])
In [16]: a = hstack((a,c))
In [17]: a
Out[17]: array([10, 20, 30, 40])
对于vstack
,初始a
的形状需要进行一些调整以使其具有形状(0,2):
In [22]: a = array([], dtype=int).reshape(-1,2)
In [23]: a
Out[23]: array([], shape=(0, 2), dtype=int64)
In [24]: b
Out[24]: array([10, 20])
In [25]: c
Out[25]: array([30, 40])
In [26]: a = vstack((a,b))
In [27]: a
Out[27]: array([[10, 20]])
In [28]: a = vstack((a,c))
In [29]: a
Out[29]:
array([[10, 20],
[30, 40]])
请注意,我在创建dtype=int
的初始值时使用了a
。如果没有这个,它会使用float
的默认dtype,然后当a
被hstack
编辑或vstack
编辑为b
时,结果会被上传到浮点数