NumPy Tutorial - NumPy Mehrdimensionales Array-Anzeigefeld
NumPy ist eine Bibliothek, die mehrdimensionale Arrays als grundlegende Datenstruktur verwendet. Die einzige Datenstruktur in NumPy ist ndarray
, aber nicht der primitive list
Datentyp, da list
relativ langsam läuft.
Nachdem Sie ndarray
gelernt haben, das der Eckpfeiler von NumPy ist, werden Sie verstehen, warum NumPy eine hohe Rechengeschwindigkeit erreichen kann.
ndarray Definition
ndarray
ist die Abkürzung für n-dimensionale Arrays, oder anders gesagt - mehrdimensionale Arrays. ndarray
ist ein Array-Objekt, das ein mehrdimensionales, homogenes Array aus Elementen fester Größe darstellt.
Die Dimensionen und die Anzahl der Elemente werden durch die Form definiert, d.h. ein Tupel von N ganzen Zahlen, das die Anzahl der Elemente in jeder Dimension repräsentiert. Der Elementtyp in dem Array wird durch dtype
- data-type object
definiert.
Lassen Sie uns die obigen Sätze in Laiensprache erklären. Alle Elemente, die im ndarray
Objekt gespeichert sind, müssen den gleichen Datentyp und die gleiche Größe haben.
Die Eigenschaften des ndarray
-Datentyps sind wie folgt zusammengefasst.
- Kann nur Elemente des gleichen Typs speichern
- Die Datenmenge in jeder Dimension muss gleich sein, z.B. 2D
ndarray
muss in jeder Spalte und natürlich auch in jeder Zeile die gleiche Anzahl an Elementen haben. - Es ist in der Sprache C geschrieben und könnte eine Matrix-Operation optimal ausführen
ndarray Attribute
Lassen Sie uns die Attribute von ndarray
auflisten.
Attribute | Beschreibung |
---|---|
T |
Transponiermatrix. Wenn das Array 1 D ist, wird das ursprüngliche Array zurückgegeben. |
data |
Ein Python-Pufferobjekt, das auf die Startposition der Daten im Array zeigt. |
dtype |
Der Datentyp des im ndarray enthaltenen Elements. |
flags |
Informationen über das Speichern von ndarray-Daten im Speicher (Speicherlayout). |
flat |
Ein Iterator, der ndarray in ein eindimensionales Array umwandelt. |
imag |
Der Imaginärteil von ndarray-Daten |
real |
Realteil der ndarray-Daten |
size |
Die Anzahl der im ndarray enthaltenen Elemente. |
itemsize |
Die Größe der einzelnen Elemente in Bytes. |
nbytes |
Der gesamte vom ndarray belegte Speicher (in Bytes). |
ndim |
Die Anzahl der Dimensionen, die im ndarray enthalten sind. |
shape |
Die Form des ndarrays (Ergebnisse sind Tupel). |
strides |
Die Anzahl der Bytes, die benötigt werden, um in jeder Dimensionsrichtung zum nächsten benachbarten Element zu gelangen, wird durch ein Tupel dargestellt. |
ctypes |
Ein Iterator, der im Modul ctypes verarbeitet wird. |
basis |
Das Objekt, auf dem ndarray basiert (welcher Speicher referenziert wird). |
Wenn Sie auf die Attribute von ndarray
zugreifen, werden die Daten der ndarray
Instanz nicht verändert, auch wenn Sie .T
verwenden, um die Transponierung des Objekts zu erhalten. Sie erhalten ein neues ndarray
Objekt, aber keine modifizierten Originaldaten.
Lassen Sie uns einen Blick auf die spezifische Bedeutung der einzelnen Attribute durch Beispielcodes werfen.
>>> import numpy as np
>>> a = np.array([1, 2, 3])
Wir müssen die NumPy
Bibliothek importieren und ein neues 1-D Array erstellen. Sie könnten seinen Datentyp und den Datentyp seines Elements überprüfen.
>>> type(a)
numpy.ndarray
>>> a.dtype
dtype('int32')
Lassen Sie uns ein neues 2-D Array erstellen und dann seine Attribute überprüfen.
>>> b = np.array([[4, 5, 6], [7, 8, 9]])
>>> b
array([[4, 5, 6],
[7, 8, 9]])
>>> b.T # get the transpose of b
array([[4, 7],
[5, 8],
[6, 9]])
>>> b # b keeps unmodified
array([[4, 5, 6],
[7, 8, 9]])
>>> a.size # a has 3 elements
3
>>> b.size # b has 6 elements
6
>>> a.itemsize # The size of element in a. The data type here is int64 - 8 bytes
8
>>> b.nbytes # check how many bytes in b. It is 48, where 6x8 = 48
48
>>> b.shape # The shape of b
(2, 3)
>>> b.dnim # The dimensions of b
2
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook