`numpy.hstack`的标识元素

时间:2013-06-05 13:39:47

标签: python matlab numpy scipy

如何创建一个空数组,然后我可以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:除了连接轴之外的所有输入数组维度必须完全匹配

2 个答案:

答案 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,然后当ahstack编辑或vstack编辑为b时,结果会被上传到浮点数