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)
Sie haben 2-Arrays definiert ist, mit Form (1,2,2) und (1,3,2). Wenn Sie über diese Formen verwirrt sind, müssen Sie einige der grundlegenden numpy
Einführung erneut lesen.
hstack
, vstack
und append
all Anruf concatenate
. Mit 3D-Arrays, die sie verwenden, verwirrt nur die Dinge.
Das Zusammenfügen auf der 2. Achse, die Größe 2 für eins und 3 für das andere, funktioniert und erzeugt ein (1,5,2) -Array. (Dies ist äquivalent zu hstack
)
In [747]: np.concatenate((queu, new_path),axis=1)
Out[747]:
array([[[0, 0],
[0, 1],
[0, 0],
[1, 0],
[2, 0]]])
Der Versuch, auf der Achse zu verbinden 0 (vstack) produziert den Fehler:
In [748]: np.concatenate((queu, new_path),axis=0)
....
ValueError: all the input array dimensions except for the concatenation axis must match exactly
Die Verkettung Achse ist 0, aber Dimensionen der Achse 1 unterscheiden. Daher der Fehler.
Ihr Ziel ist kein gültiges Numy-Array. Sie könnten sie zusammen in einer Liste sammeln:
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]])]
oder ein Objekt dtype Array - aber das ist weiter fortgeschritten numpy
.
Ihr gewünschtes Ergebnis ist keine Matrix, da eine Matrix die gleiche Anzahl von Elementen an allen Achsen haben muss (z. B. 3x2 - 3 Zeilen mit genau 2 Elementen in jeder Zeile) – sirfz
Ok, ich verstehe. Ich versuche alle möglichen Wege auf einer 2D-Matrix aufzuzählen. Ich werde meinen Ansatz ändern. –