Um es klar zu sagen, wir sprechen über:
- ein NumPy-Array, auch bekannt als
numpy.ndarray
- die Form eines Arrays, bekannt als
numpy.ndarray.shape
- die Frage geht von einem unbekannten
numpy.ndarray
mit der Form (R,)
aus, wobei R
als Länge seiner jeweiligen Dimension verstanden werden sollte
NumPy-Arrays haben eine Form. Diese .shape
wird durch ein Tupel dargestellt, bei dem jedes Element im Tupel uns die Länge dieser Dimension angibt. Um es einfach zu halten, bleiben wir bei Zeilen und Spalten. Während die Werte unseres numpy.ndarray
in den folgenden Beispielen nicht verändern werden, wird die Form dies tun.
Betrachten wir ein Array mit den Werten 1, 2, 3 und 4.
Unsere Beispiele beinhalten die folgenden .shape
-Darstellungen:
(4,) # 1-dimensionales Array mit Länge 4
(1,4) # 2-dimensionales Array mit einer Zeilenlänge von 1 und einer Spaltenlänge von 4
(4,1) # 2-dimensionales Array mit einer Zeilenlänge von 4 und einer Spaltenlänge von 1
Wir können dies abstrakter mit den Variablen a
und b
betrachten.
(a,) # 1-dimensionales Array mit Länge a
(b,a) # 2-dimensionales Array mit einer Zeilenlänge von b und einer Spaltenlänge von a
(a,b) # 2-dimensionales Array mit einer Zeilenlänge von a und einer Spaltenlänge von b
Für mich ist es hilfreich, diese 'manuell' aufzubauen, um ein besseres Verständnis dafür zu bekommen, was ihre Dimensionen bedeuten.
>> # (4,)
>> eindimensionaler Vektor = np.array(
[1, 2, 3, 4]
)
>> # (1,4)
>> Zeilenvektor = np.array(
[
[1, 2, 3, 4]
]
)
>> # (4,1)
>> Spaltenvektor = np.array(
[
[1],
[2],
[3],
[4]
]
)
Also, die Antwort auf die erste Frage:
- Was ist der Unterschied zwischen der Form (R, 1) und (R,)?
Antwort: Sie haben unterschiedliche Dimensionen. a
ist die Länge der einen Dimension und b
die Länge einer anderen, .shape
ist jeweils (a, b)
und (a,)
. b
ist einfach zufällig 1. Eine Möglichkeit, dies zu betrachten, ist: Wenn a = 1
ist, dann hat die Zeile die Länge 1 und es handelt sich also um einen Zeilenvektor. Wenn b = 1
ist, dann hat die Spalte die Länge 1 und das numpy.ndarray
, das es repräsentiert, ist ein Spaltenvektor.
- Gibt es bessere Möglichkeiten für das obige Beispiel?
Antwort: Angenommen, wir haben das Array, das ich oben als Beispiel mit den Werten 1, 2, 3 und 4 verwendet habe. Eine praktische Möglichkeit, (R,)
zu (R, 1)
zu machen, ist folgende:
>> eindimensionales_array = np.array([1,2,3,4])
>> eindimensionales_array.shape
(4,)
>> Zeilenvektor = eindimensionales_array[:, None]
>> Zeilenvektor.shape
(4, 1)
Ressourcen
- NumPy — ndarrays — https://numpy.org/doc/stable/reference/arrays.ndarray.html
- Cross Validated @unutbu — Dimensionstrick — https://stats.stackexchange.com/a/285005