NumPy Tutorial - NumPy Mehrdimensionales Array-Anzeigefeld

Jinku Hu 18 Juli 2021
  1. ndarray Definition
  2. ndarray Attribute
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.

  1. Kann nur Elemente des gleichen Typs speichern
  2. 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.
  3. 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
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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