NumPy Tutorial - NumPy Multidimensionale NumPy Array Multidimensionale

Jinku Hu 18 luglio 2021
  1. Definizione ndarray
  2. Attributi ndarray
NumPy Tutorial - NumPy Multidimensionale NumPy Array Multidimensionale

NumPy è una libreria che utilizza array multidimensionali come struttura dati di base. L’unica struttura di dati in NumPy è ndarray ma non Python primitive tipo di dati list data type, perché list funziona relativamente lentamente.

Dopo aver imparato ndarray che è la pietra angolare di NumPy, capirete perché NumPy può raggiungere l’alta velocità di calcolo.

Definizione ndarray

ndarray è l’abbreviazione di n-dimension array, o in altre parole - array multidimensionali. ndarray è un oggetto array che rappresenta un array multidimensionale e omogeneo di oggetti di dimensioni fisse.

Le dimensioni e il numero di elementi sono definiti dalla forma, cioè una tupla di N interi che rappresenta il numero di elementi in ogni dimensione. Il tipo di elemento nell’array è definito da dtype - data-type object.

Spieghiamo le frasi di cui sopra in linguaggio profano. Tutti gli elementi memorizzati nell’oggetto ndarray devono avere lo stesso tipo di dati e la stessa dimensione.

Le caratteristiche del tipo di dati ndarray sono riassunte come segue.

  1. Può memorizzare solo elementi dello stesso tipo
  2. La quantità di dati in ogni dimensione deve essere la stessa, ad esempio 2D ndarray deve avere la stessa quantità di elementi in ogni colonna, e naturalmente anche in ogni riga.
  3. È scritto in linguaggio C e può eseguire in modo ottimale l’operazione matrice

Attributi ndarray

listeamo gli attributi di ndarray.

Attributi Descrizione
T Trasporre matrice. Quando la matrice è 1 D, viene restituita la matrice originale.
data Un oggetto Python buffer che punta alla posizione iniziale dei dati nell’array.
dtype Il tipo di dati dell’elemento contenuto nell’ndarray.
flags Informazioni su come memorizzare i dati ndarray in memoria (layout della memoria).
flat Un iteratore che converte l’ndarray in un array unidimensionale.
imag La parte immaginaria dei dati ndarray
real Parte reale dei dati ndarray
size Il numero di elementi contenuti nell’ndarray.
itemsize La dimensione di ogni elemento in byte.
nbytes La memoria totale (in byte) occupata dall’ndarray.
ndim Il numero di dimensioni contenute nell’ndarray.
shape La forma dell’ndarray (i risultati sono tuple).
strides Il numero di byte necessari per passare all’elemento adiacente successivo in ogni direzione della dimensione è rappresentato da una tupla.
ctypes Un iteratore che viene elaborato nel modulo ctypes.
base L’oggetto su cui si basa ndarray (a cui fa riferimento la memoria).

Quando si accede agli attributi di ndarray, i dati dell’istanza ndarray non vengono modificati, anche se si usa .T per ottenere la trasposizione dell’oggetto. Si ottiene un nuovo oggetto ndarray ma non i dati originali modificati.

Diamo un’occhiata al significato specifico di ogni attributo attraverso codici di esempio.

>>> import numpy as np
>>> a = np.array([1, 2, 3])

Dobbiamo importare la libreria NumPy e creare un nuovo array 1-D. Si potrebbe controllare il suo tipo di dati e il tipo di dati del suo elemento.

>>> type(a)
numpy.ndarray
>>> a.dtype
dtype('int32')

Creiamo un nuovo array 2-D e poi controlliamo i suoi attributi.

>>> 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
Autore: 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