2017-06-23 51 views
0

我得到以下错误:蟒ValueError异常使用hstack()(ValueError异常:所有除级联轴输入数组尺寸必须完全匹配)

Traceback (most recent call last): 
File "/home/odroid/trackAndFollow/getPositions.py", line 34, in 
<module> 
tfVeloToCamera = np.hstack((np.vstack((rmVeloToCamera, 
zero_array)),np.transpose(translationVector_veloToCamera))) 
File "/usr/lib/python2.7/dist-packages/numpy/core/shape_base.py", line 
280, in hstack 
return _nx.concatenate(arrs, 1) 
ValueError: all the input array dimensions except for the 
concatenation axis must match exactly 

的代码:

rotationVector_veloToCamera = 
np.array([[[-1.77611954,0.30024612,0.76069987]]]) 
translationVector_veloToCamera = np.array([[ 
0.0146381,0.02553223,0.16231193]]) 

rmVeloToCamera,jac = cv2.Rodrigues(rotationVector_veloToCamera) 
tfVeloToCamera = np.hstack((np.vstack((rmVeloToCamera, 
zero_array)),np.transpose(translationVector_veloToCamera))) 

我阅读某处,其原因是形状或dtype .. 在堆叠内部的2个变量的形状是(4,3)(3,1) 和都具有dtype = float64。

任何想法是什么造成这种情况?

回答

0

如果您试图堆叠的阵列的形状是(4, 3)(3, 1),那么它们没有任何匹配的阵列尺寸,如4 != 33 != 1。如果您要采取第一个转置,给出尺寸(3, 4)(3, 1),它们应该堆叠。

np.hstack((np.zeros((4, 3)), np.zeros((3,1)))) 
Traceback (most recent call last): 
... 
ValueError: all the input array dimensions except for the concatenation axis must match exactly 

np.hstack((np.zeros((4, 3)).T, np.zeros((3,1)))) 
Out[56]: 
array([[ 0., 0., 0., 0., 0.], 
     [ 0., 0., 0., 0., 0.], 
     [ 0., 0., 0., 0., 0.]]) 

顺便说一句,你可能想看看在转移到使用np.concatenate并指定一个轴,而不是np.vstacknp.hstack

例:

np.concatenate((np.zeros((4, 3)), np.zeros((3,1)).T), axis=0) 
Out[20]: 
array([[ 0., 0., 0.], 
     [ 0., 0., 0.], 
     [ 0., 0., 0.], 
     [ 0., 0., 0.], 
     [ 0., 0., 0.]]) 
+0

我换位第二个和现在它们是(4,3)和(1,3)。根据你的解释,这应该工作,因为3 = 3,但我仍然得到相同的错误.. – Drak

+0

@DARK我可以更清晰;我会考虑如何编辑。你仍然在使用'hstack',它只检查第一个轴的匹配。 'vstack'只检查第二个,'dstack'是第三个。你可以使用'vstack'或者更好的方法是使用'stack'并指定'axis = 1'作为参数。 – EFT

+0

我试过'堆栈',它只是不会为我工作。我使用'hstack'和'vstack'工作(结果我错过了'.T')。 你可能会解释'numpy.stack'与不同的轴=选项? – Drak

相关问题