Weil beide a
und b
nur eine Achse haben, wie ihre Form ist (3)
, und der Achsenparameter sich speziell auf die Achse der zu verkettenden Elemente bezieht.
Dieses Beispiel soll verdeutlichen, was concatenate
mit der Achse geschieht. Nehmen Sie zwei Vektoren mit zwei Achsen und Form (2,3)
:
a = np.array([[1,5,9], [2,6,10]])
b = np.array([[3,7,11], [4,8,12]])
verkettet entlang der 1. Achse (Reihen der 1., dann Reihen der 2.):
np.concatenate((a,b), axis=0)
array([[ 1, 5, 9],
[ 2, 6, 10],
[ 3, 7, 11],
[ 4, 8, 12]])
verkettet entlang der 2. Achse (Spalten der 1., dann Spalten der 2.):
np.concatenate((a, b), axis=1)
array([[ 1, 5, 9, 3, 7, 11],
[ 2, 6, 10, 4, 8, 12]])
Um die von Ihnen präsentierte Ausgabe zu erhalten, können Sie verwenden vstack
a = np.array([1,2,3])
b = np.array([4,5,6])
np.vstack((a, b))
array([[1, 2, 3],
[4, 5, 6]])
Sie können es immer noch tun concatenate
, aber Sie müssen sie zuerst umformen:
np.concatenate((a.reshape(1,3), b.reshape(1,3)))
array([[1, 2, 3],
[4, 5, 6]])
Wie in den Kommentaren vorgeschlagen, besteht eine Möglichkeit, sie umzugestalten, darin, Folgendes zu verwenden newaxis
:
np.concatenate((a[np.newaxis,:], b[np.newaxis,:]))
np.vstack((a,b))
für diesen Zweck verwenden (falls Sie es nicht wissen)