0

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

4

2 回答 2

2

您可以resize将 的尺寸与 of匹配a并填写缺失值。这将改变大小并用默认值填充它,因为这是shapebanp.floats0.0

a = np.array([])
b = np.array([10, 20])
a.resize(b.shape)

np.hstack((a, b))
于 2013-06-05T13:44:28.830 回答
2

使用np.array([])withhstack对我有用。

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. 没有这个,它使用默认的 dtype float,然后当aedhstackvstacked withb时,结果向上转换为 float。

于 2013-06-05T14:14:20.170 回答