我有三个要追加的数组。 这是我的载体样本:
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有什么问题?
答案 0 :(得分:1)
要使用np.hstack
,我们需要将V1
转换为2D
,以使三个输入数组沿第一轴的长度相同 -
np.hstack((V1[:,None],V2,V3))
作为替代方案,我们可以在2D
转换V1
上的第二个轴上使用np.column_stack
或np.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。