我有三个数组需要附加。下面是我的向量示例:
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]])
为了附加三个向量并得到一个向量,我执行以下操作:
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 有什么问题?
在你的代码中,问题出在 V1 的形状上。V1 是一个一维数组,而 V2 和 V3 是二维数组。np.hstack() 需要拼接的数组维度必须相同,因此你收到 ValueError: all the input arrays must have same number of dimensions 错误。
V1
V2
V3
np.hstack()
要解决这个问题,首先需要将 V1 转换成一个二维数组,使其能够与 V2 和 V3 进行拼接。你可以将 V1 转换为一个形状为 (n, 1) 的二维数组,其中 n 是元素的个数。这样,V1 就会变成一个列向量,能够与 V2 和 V3 对齐进行拼接。
(n, 1)
n
可以这样修改代码:
import numpy as np V1 = np.array([0.03317591, -0.01624349, -0.01151019]) V2 = np.array([[0.06865846, -0.00223798], [-0.02872752, -0.00369226], [-0.02063454, -0.00231726]]) V3 = np.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]]) # Convert V1 to a column vector V1 = V1[:, np.newaxis] # Now you can stack them horizontally new_v = np.hstack((V1, V2, V3)) print(new_v)
V1[:, np.newaxis]
(3,)
(3, 1)
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 被正确地转换为一个列向量,并且与你的 V2 和 V3 进行了水平拼接,得到了你想要的输出。