Um das Kreuzprodukt mit numpy.cross
zu berechnen, muss die Dimension (Länge) der Array-Dimension, die die beiden Vektoren definiert, entweder zwei oder drei betragen. Um die Dokumentation zu zitieren:
Wenn
a
undb
Arrays von Vektoren sind, die Vektoren werden standardmäßig durch die letzte Achse vona
undb
und diese Achsen definiert kann Dimensionen 2 oder 3 haben.
Beachten Sie, dass die letzte Achse die Standardeinstellung ist. In Ihrem Beispiel:
%Vor%Die letzte Achse hat nur die Länge 1, also ist das Kreuzprodukt nicht definiert. Wenn Sie jedoch die Transponierung verwenden, ist die Länge entlang der letzten Achse 3, also ist sie gültig. Sie könnten auch tun:
%Vor% zeigt cross
an, dass die Vektoren entlang der ersten Achse und nicht auf der letzten Achse definiert sind.
In numpy verwenden wir oft 1d-Arrays, um Vektoren darzustellen, und wir behandeln sie entweder als Zeilenvektor oder als Spaltenvektor, abhängig vom Kontext, zum Beispiel:
%Vor%Sie können Vektoren als 2D-Arrays speichern. Dies ist besonders nützlich, wenn Sie eine Sammlung von Vektoren haben, die Sie ähnlich behandeln möchten. Zum Beispiel, wenn ich 4 Vektoren in a mit 4 Vektoren in b kreuzen möchte. Standardmäßig nimmt numpy an, dass die Vektoren entlang der letzten Dimensionen liegen, aber Sie können die Argumente axia und axisb verwenden, um explizit anzugeben, dass die Vektoren entlang der ersten Dimension liegen.
%Vor%