In [741]: queu = np.array([[[0,0],[0,1]]])
In [742]: new_path = np.array([[[0,0],[1,0],[2,0]]])
In [743]: queu
Out[743]:
array([[[0, 0],
[0, 1]]])
In [744]: queu.shape
Out[744]: (1, 2, 2)
In [745]: new_path
Out[745]:
array([[[0, 0],
[1, 0],
[2, 0]]])
In [746]: new_path.shape
Out[746]: (1, 3, 2)
您已定義2個陣列,具有形狀(1,2,2-)以及(1,3,2-)。如果您對這些形狀感到困惑,則需要重新閱讀一些基本的numpy
介紹。
hstack
vstack
和append
所有呼叫concatenate
。使用3d數組只會混淆事項。
加入第二個軸,其大小爲2,一個爲3,另一個軸爲3,生成一個(1,5,2)陣列。 (這相當於hstack
)
In [747]: np.concatenate((queu, new_path),axis=1)
Out[747]:
array([[[0, 0],
[0, 1],
[0, 0],
[1, 0],
[2, 0]]])
試圖加入關於軸線0(vstack)產生的誤差:
In [748]: np.concatenate((queu, new_path),axis=0)
....
ValueError: all the input array dimensions except for the concatenation axis must match exactly
級聯軸是0,但軸1的尺寸不同。因此錯誤。您的目標不是有效的numpy數組。你可以在列表將它們彙總:
In [759]: alist=[queu[0], new_path[0]]
In [760]: alist
Out[760]:
[array([[0, 0],
[0, 1]]),
array([[0, 0],
[1, 0],
[2, 0]])]
或對象數組D型 - 但是這是更高級的numpy
。
您所需的結果不是矩陣,因爲矩陣需要在所有軸上具有相同數量的元素(例如3x2-3行,每行只有2個元素) – sirfz
好的,我明白了。我嘗試在2D矩陣上列舉所有可能的方法。我會改變我的方法。 –