ValueError:所有输入数组必须具有相同的维数。堆叠向量

时间:2017-12-04 14:58:15

标签: python numpy stack append

我有三个要追加的数组。 这是我的载体样本:

V1=array([ 0.03317591, -0.01624349, -0.01151019])
V2=array([[ 0.06865846, -0.00223798],
       [-0.02872752, -0.00369226],
       [-0.02063454, -0.00231726]])
V3=
array([[ 0.01160267,  0.12610824, -0.01634712,  0.01217519],
       [-0.00727594, -0.0501376 , -0.01641992,  0.00933081],
       [-0.05305551,  0.01195211,  0.04031831, -0.04476306]])

为了附加三个向量并获得一个向量l执行以下操作:

new_v=np.hstack((V1,V2,V3))

我收到了以下错误:

ValueError: all the input arrays must have same number of dimensions

但是:

 V2_V3=np.hstack((V2,V3))

有效,它返回:

array([[ 0.06865846, -0.00223798,  0.01160267,  0.12610824, -0.01634712,
         0.01217519],
       [-0.02872752, -0.00369226, -0.00727594, -0.0501376 , -0.01641992,
         0.00933081],
       [-0.02063454, -0.00231726, -0.05305551,  0.01195211,  0.04031831,
        -0.04476306]])

我想得到的是:

array([[0.03317591, 0.06865846, -0.00223798,  0.01160267,  0.12610824, -0.01634712,
         0.01217519],
       [-0.01624349, -0.02872752, -0.00369226, -0.00727594, -0.0501376 , -0.01641992,
         0.00933081],
       [-0.01151019, -0.02063454, -0.00231726, -0.05305551,  0.01195211,  0.04031831,
        -0.04476306]])

V1有什么问题?

2 个答案:

答案 0 :(得分:1)

要使用np.hstack,我们需要将V1转换为2D,以使三个输入数组沿第一轴的长度相同 -

np.hstack((V1[:,None],V2,V3))

作为替代方案,我们可以在2D转换V1上的第二个轴上使用np.column_stacknp.concatenate以及其他人np.c_ -

np.column_stack((V1,V2,V3))
np.concatenate([V1[:,None],V2,V3],axis=1)
np.c_[V1,V2,V3]

答案 1 :(得分:0)

除了它是1D而V2和V3是2D时,V1没有任何问题。根据{{​​3}},除了第二个轴之外,所有输入数组必须具有相同的形状。代码中的V1没有第二个轴。

您可以在调用hstack时轻松地将一个空的第二轴添加到V1:

new_v = hstack((V1[:, None], V2, V3))

这应该达到你想要的输出。

注意: V1[:, None]位是NumPy可用于向数组添加空维度的三种方法之一。另外两个是V1[:, np.newaxis]和函数版本np.expand_dims(V1, axis=1)

您可以在该行代码中使用其中任何一个来代替V1[:, None],它可以正常工作。有关向阵列添加维度的更多信息,请查看docs for hstack