Heim > Artikel > Backend-Entwicklung > Warum ändert das Transponieren eines 1D-NumPy-Arrays seine Form nicht?
NumPy-Arrays transponieren: 1D-Matrixverhalten dekodieren
Beim Umgang mit NumPy-Arrays ist es wichtig, insbesondere das Verhalten der Transponierungsoperation zu verstehen für 1D-Arrays. Das Transponieren eines 1D-Arrays führt entgegen den allgemeinen Erwartungen zu einem anderen 1D-Array.
Verwechslung mit der Transponierungsoperation
Bedenken Sie den folgenden NumPy-Code:
import numpy as np a = np.array([5,4]) print(a) print(a.T)
In diesem Szenario transponiert der Aufruf von a.T das Array nicht, wie man annehmen könnte. Stattdessen wird das Array unverändert zurückgegeben.
1D-Array-Transponierungsverhalten
Der Grund für dieses Verhalten liegt in der grundlegenden Natur von 1D-Arrays in NumPy. Im Gegensatz zu MATLAB unterscheidet NumPy nicht zwischen 1D- und 2D-Arrays. Ein 1D-Array in NumPy ist im Wesentlichen ein 2D-Array mit den Dimensionen (1, n), wobei n die Länge des Arrays darstellt.
Daher werden beim Transponieren eines 1D-Arrays die Elemente einfach entlang einer Achse neu angeordnet, was zu a führt 2D-Array mit den Dimensionen (n, 1). Im gegebenen Beispiel hat die Transponierungsoperation keine sichtbare Auswirkung, da das Array bereits ein (1, 2)-dimensionales Array ist und jede Achsendrehung ein 1D-Array bleiben würde.
Erstellen eines 2D-Arrays für Transposition
Wenn das gewünschte Ergebnis darin besteht, ein 1D-Array in ein 2D-Array zu transponieren, kann man np.newaxis (oder äquivalent None), um eine zusätzliche Dimension zu erstellen.
a = np.array([5,4])[np.newaxis] print(a) print(a.T)
Durch Hinzufügen einer Dimension mit np.newaxis wird das resultierende Array zu einem (1, 2)-dimensionalen Array, was eine ordnungsgemäße Transposition ermöglicht.
Zusätzliche Erkenntnisse
In den meisten praktischen Szenarien ist eine explizite Transposition eines 1D-Arrays jedoch nicht erforderlich. NumPy überträgt 1D-Arrays während der Berechnungen automatisch in höhere Dimensionen und macht so für den Benutzer transparent, ob mit Zeilen- oder Spaltenvektoren gearbeitet wird.
Das obige ist der detaillierte Inhalt vonWarum ändert das Transponieren eines 1D-NumPy-Arrays seine Form nicht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!