English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

NumPy数组属性

    Descrizione delle proprietà degli array NumPy e esempio

Il numero di dimensioni degli array in NumPy si chiama rango (rank), ovvero la dimensione dell'array, il rango dell'array unidimensionale è 1, il rango dell'array bidimensionale è 2, e così via.
In NumPy, ogni array lineare è chiamato asse (axis), axis=0 indica l'operazione lungo l'asse 0, ovvero l'operazione su ogni colonna; axis=1 indica l'operazione lungo l'asse 1, ovvero l'operazione su ogni riga.
Ad esempio, l'array bidimensionale è equivalente a due array unidimensionali, ciascuno dei quali è un array unidimensionale.
Quindi, l'array unidimensionale è l'asse (axis) in NumPy, il primo asse è l'array di base, il secondo asse è l'array all'interno dell'array di base.

Le proprietà ndarray molto importanti negli array di NumPy sono

I tipi di dati supportati da NumPy sono più di Tipi di dati integrati di PythonCi sono molti di più, che possono essere基本上 corrispondenti ai tipi di dati del linguaggio C, tra cui alcune tipologie corrispondono ai tipi di dati integrati di Python. La tabella seguente elenca i tipi di dati di base di NumPy utilizzati più frequentemente.

ndarray.ndim - L'ordine, ossia il numero di assi o il numero di dimensioni.ndarray.shape - La dimensione dell'array, per la matrice, n righe m colonne.ndarray.size - Il numero totale di elementi dell'array, equivalente al valore di n*m in .shape.ndarray.dtype - Il tipo di elemento dell'oggetto ndarray.ndarray.itemsize - La dimensione di ogni elemento dell'oggetto ndarray, in byte.ndarray.flags - Informazioni di memoria dell'oggetto ndarray.ndarray.real - Parte reale degli elementi ndarray.ndarray.imag - Parte immaginaria degli elementi ndarray.ndarray.data - La memoria buffer contenente gli elementi dell'array, poiché di solito si ottengono gli elementi dell'array tramite l'indice dell'array, di solito non è necessario utilizzare questa proprietà.

1、ndarray.ndim

La proprietà ndarray.ndim viene utilizzata per restituire il numero di dimensioni dell'array, che è uguale all'ordine.

>>> import numpy as np
>>> a = np.arange(24)
>>> print(a.ndim) 
1  # a ora ha una sola dimensione
>>> b = a.reshape(2,4,3)
>>> print(b.ndim)
3  # b ora ha tre dimensioni

2、ndarray.shape

La proprietà ndarray.shape rappresenta la dimensione dell'array, restituisce un tuple, la lunghezza del quale è il numero di dimensioni, ossia l'attributo ndim (ordine). Ad esempio, un array bidimensionale, la sua dimensione è rappresentata da "numero di righe" e "numero di colonne".
La proprietà ndarray.shape può anche essere utilizzata per modificare la dimensione dell'array.

>>> import numpy as np
>>> a = np.array([[1,2,3,4,5,6],[4,5,6,7,8,9]])
>>> print(a.shape)
(2, 6)
>>> a.shape = (6,2)
>>> print(a)
[[1 2]
 [3 4]
 [5 6]
 [4 5]
 [6 7]
 [8 9]]

Inoltre, NumPy offre anche la funzione reshape per modificare la dimensione dell'array, come nell'esempio seguente:

>>> import numpy as np
>>> a = np.array([[1,2,3,4,5,6],[4,5,6,7,8,9]])
>>> b = a.reshape(6,2)
>>> print(b)
[[1 2]
 [3 4]
 [5 6]
 [4 5]
 [6 7]
 [8 9]]

3、ndarray.size

ndarray.size è il numero di elementi dell'array. Uguale a np.prod(a.shape), ossia il prodotto delle dimensioni dell'array.
a.size restituisce un intero Python a precisione arbitraria standard. Per altri metodi che restituiscono lo stesso valore, la situazione potrebbe non essere la stessa (ad esempio, il metodo consigliato np.prod(a.shape), che restituisce un'istanza np.int_), e se tale valore viene utilizzato ulteriormente in calcoli che potrebbero sovraccaricare il tipo di intero a dimensione fissa, potrebbe essere rilevante.

>>> import numpy as np
>>> x = np.zeros((3, 5, 2), dtype=np.complex128)
>>> x.size
30
>>> np.prod(x.shape)
30

4、ndarray.dtype

>>> import numpy as np
>>> x
array([[0, 1],
       [2, 3]]
>>> x.dtype
dtype('int32')
>>> type(x.dtype)

5、ndarray.itemsize

ndarray.itemsize restituisce la dimensione di ogni elemento dell'array in byte.
Ad esempio, un array di tipo elementare float64 ha un valore di itemsize di 8 (float64 occupa 64 bit, ogni byte ha una lunghezza di 8, quindi 64/8, occupa 8 byte), e ad esempio, un array di tipo elementare complex32 ha un valore di item di 4 (32/8).

>>> import numpy as np
>>> x = np.array([1,2,3,4,5], dtype = np.int8)
>>> print(x.itemsize)
1
>>> y = np.array([1,2,3,4,5], dtype = np.float64)
>>> print(y.itemsize)
8

6、ndarray.flags

ndarray.flags restituisce informazioni sulla memoria dell'oggetto ndarray, inclusi i seguenti attributi:

C_CONTIGUOUS (C) - I dati sono in un unico segmento contiguo di stile C.F_CONTIGUOUS (F) - I dati sono in un unico segmento contiguo di stile Fortran.OWNDATA (O) - 数组拥有它所使用的内存或从另一个对象中借用它。WRITEABLE (W) - 数据区域可以被写入,将该值设置为 False,则数据为只读。ALIGNED (A) - 数据和所有元素都适当地对齐到硬件上。UPDATEIFCOPY (U) - 这个数组是其它数组的一个副本,当这个数组被释放时,原数组的内容将被更新。

>>> import numpy as np
>>> a = np.array([1,2,3,4,5])
>>> print(a.flags)
  C_CONTIGUOUS : True
  F_CONTIGUOUS : True
  OWNDATA : True
  WRITEABLE : True
  ALIGNED : True
  WRITEBACKIFCOPY : False
  UPDATEIFCOPY : False

7、ndarray.real和x.imag

>>> import numpy as np
>>> x = np.sqrt([1+0j, 0+1j])
>>> x.real
array([1. , 0.70710678])
>>> x.real.dtype
dtype('float64')
>>> x.imag
array([0. , 0.70710678])
>>> x.imag.dtype
dtype('float64')