Kreuzprodukt eines Vektors in NumPy

8

Betrachten Sie die folgenden Vektoren (im Wesentlichen 2x1 Matrizen):

%Vor%

Das Kreuzprodukt dieser Vektoren kann mit numpy.cross() berechnet werden. Warum funktioniert das nicht?

%Vor%

aber das tut?:

%Vor%     
Ingo 12.02.2012, 17:13
quelle

3 Antworten

14

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 und b Arrays von Vektoren sind, die Vektoren       werden standardmäßig durch die letzte Achse von a und b 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.

    
talonmies 12.02.2012, 17:23
quelle
3

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%     
Bi Rico 12.02.2012 17:34
quelle
1

Sie sollten a und b folgendermaßen erstellen:

%Vor%

, so dass sie dimension = 3 haben.

    
Ruofeng 12.02.2012 17:25
quelle

Tags und Links