2017-06-23 77 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

相關問題