Python numpy Vektor Mathe

8

Was ist das numpy entspricht den euclid 2d Vektor Klassen / Operationen? (wie: euclid.Vector2 )

Bisher habe ich das. Erzeuge zwei Vektoren

%Vor%     
ninMonkey 21.08.2012, 06:01
quelle

1 Antwort

21

Sie können einfach numme Arrays verwenden. Schauen Sie sich die numpy für Matlab Benutzer Seite für eine detaillierte Übersicht über die Vor- und Nachteile von Arrays w.r.t. Matrizen.

Wie ich im Kommentar erwähnt, für mutiplication von Vektoren, die die dot() Funktion oder Methode zu verwenden ist die größte Gefahr. Aber wiederum sind numplige Arrays konsistent . Alle Operationen sind elementweise. So das Hinzufügen oder Arrays und Multiplikation mit einem Skalar alle Arbeiten wie erwartet von Vektoren subtrahiert wird.

Edit2: Beginnend mit Python 3.5 und numpy 1.10 können Sie das @ Infix-Operator für die Matrixmultiplikation, dank pep 465 .

Bearbeiten: In Bezug auf Ihren Kommentar:

  1. Ja. Die Gesamtheit von numpy basiert auf Arrays.

  2. Ja. linalg.norm(v) ist ein guter Weg, um die Länge eines Vektors zu erhalten. Aber was Sie bekommen, hängt vom möglichen zweiten Argument zur Norm ab! Lesen Sie die Dokumentation.

  3. Um einen Vektor zu normalisieren, teilen Sie ihn einfach durch die Länge, die Sie in (2) berechnet haben. Division von Arrays durch einen Skalar ist auch elementweise.

    Ein Beispiel in ipython:

    %Vor%

    Beachten Sie, dass In [5] eine alternative Methode zur Berechnung der Länge darstellt. In [6] zeigt an, dass der Vektor normalisiert wird.

Roland Smith 21.08.2012, 08:39
quelle

Tags und Links