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.
- Può memorizzare solo elementi dello stesso tipo
- 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. - È 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
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