Heim >Backend-Entwicklung >Python-Tutorial >Warum ändert das Transponieren eines 1D-NumPy-Arrays seine Form nicht?

Warum ändert das Transponieren eines 1D-NumPy-Arrays seine Form nicht?

Susan Sarandon
Susan SarandonOriginal
2024-11-11 12:14:03934Durchsuche

Why Does Transposing a 1D NumPy Array Not Change Its Shape?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn