NumPy - Tipi di dati
NumPy supporta una varietà molto maggiore di tipi numerici rispetto a Python. La tabella seguente mostra diversi tipi di dati scalari definiti in NumPy.
Sr.No. | Tipi di dati e descrizione |
---|---|
1 | bool_ Booleano (Vero o Falso) memorizzato come byte |
2 | int_ Tipo intero predefinito (uguale a C long; normalmente int64 o int32) |
3 | intc Identico a C int (normalmente int32 o int64) |
4 | intp Numero intero utilizzato per l'indicizzazione (uguale a C ssize_t; normalmente int32 o int64) |
5 | int8 Byte (da -128 a 127) |
6 | int16 Numero intero (da -32768 a 32767) |
7 | int32 Numero intero (da -2147483648 a 2147483647) |
8 | int64 Numero intero (da -9223372036854775808 a 9223372036854775807) |
9 | uint8 Numero intero senza segno (da 0 a 255) |
10 | uint16 Numero intero senza segno (da 0 a 65535) |
11 | uint32 Numero intero senza segno (da 0 a 4294967295) |
12 | uint64 Numero intero senza segno (da 0 a 18446744073709551615) |
13 | float_ Abbreviazione di float64 |
14 | float16 Float a mezza precisione: bit di segno, esponente a 5 bit, mantissa a 10 bit |
15 | float32 Float a precisione singola: bit di segno, esponente a 8 bit, mantissa a 23 bit |
16 | float64 Float a doppia precisione: bit di segno, esponente a 11 bit, mantissa a 52 bit |
17 | complex_ Abbreviazione di complex128 |
18 | complex64 Numero complesso, rappresentato da due float a 32 bit (componenti reali e immaginari) |
19 | complex128 Numero complesso, rappresentato da due float a 64 bit (componenti reali e immaginari) |
I tipi numerici NumPy sono istanze di oggetti dtype (data-type), ciascuno con caratteristiche uniche. I dtypes sono disponibili come np.bool_, np.float32, ecc.
Oggetti tipo di dati (dtype)
Un oggetto di tipo di dati descrive l'interpretazione del blocco fisso di memoria corrispondente a un array, a seconda dei seguenti aspetti:
Tipo di dati (intero, float o oggetto Python)
Dimensioni dei dati
Ordine byte (little-endian o big-endian)
In caso di tipo strutturato, i nomi dei campi, il tipo di dati di ogni campo e parte del blocco di memoria preso da ogni campo.
Se il tipo di dati è un sottoarray, la sua forma e il tipo di dati
L'ordine dei byte viene deciso anteponendo "<" o ">" al tipo di dati. '<' significa che la codifica è little-endian (il meno significativo è memorizzato nell'indirizzo più piccolo). '>' significa che la codifica è big-endian (il byte più significativo è memorizzato nell'indirizzo più piccolo).
Un oggetto dtype viene costruito utilizzando la seguente sintassi:
numpy.dtype(object, align, copy)
I parametri sono:
Object - Da convertire in oggetto di tipo dati
Align - Se true, aggiunge il riempimento al campo per renderlo simile a C-struct
Copy- Crea una nuova copia dell'oggetto dtype. Se false, il risultato è un riferimento all'oggetto del tipo di dati incorporato
Esempio 1
# using array-scalar type
import numpy as np
dt = np.dtype(np.int32)
print dt
L'output è il seguente:
int32
Esempio 2
#int8, int16, int32, int64 can be replaced by equivalent string 'i1', 'i2','i4', etc.
import numpy as np
dt = np.dtype('i4')
print dt
L'output è il seguente:
int32
Esempio 3
# using endian notation
import numpy as np
dt = np.dtype('>i4')
print dt
L'output è il seguente:
>i4
I seguenti esempi mostrano l'uso del tipo di dati strutturato. Qui devono essere dichiarati il nome del campo e il tipo di dati scalare corrispondente.
Esempio 4
# first create structured data type
import numpy as np
dt = np.dtype([('age',np.int8)])
print dt
L'output è il seguente:
[('age', 'i1')]
Esempio 5
# now apply it to ndarray object
import numpy as np
dt = np.dtype([('age',np.int8)])
a = np.array([(10,),(20,),(30,)], dtype = dt)
print a
L'output è il seguente:
[(10,) (20,) (30,)]
Esempio 6
# file name can be used to access content of age column
import numpy as np
dt = np.dtype([('age',np.int8)])
a = np.array([(10,),(20,),(30,)], dtype = dt)
print a['age']
L'output è il seguente:
[10 20 30]
Esempio 7
I seguenti esempi definiscono un tipo di dati strutturato chiamato student con un campo stringa "nome", un file integer field 'età' e a float field"segni". Questo dtype viene applicato all'oggetto ndarray.
import numpy as np
student = np.dtype([('name','S20'), ('age', 'i1'), ('marks', 'f4')])
print student
L'output è il seguente:
[('name', 'S20'), ('age', 'i1'), ('marks', '<f4')])
Esempio 8
import numpy as np
student = np.dtype([('name','S20'), ('age', 'i1'), ('marks', 'f4')])
a = np.array([('abc', 21, 50),('xyz', 18, 75)], dtype = student)
print a
L'output è il seguente:
[('abc', 21, 50.0), ('xyz', 18, 75.0)]
Ogni tipo di dati incorporato ha un codice carattere che lo identifica in modo univoco.
'b' - booleano
'i' - (con segno) intero
'u' - numero intero senza segno
'f' - virgola mobile
'c' - virgola mobile complessa
'm' - timedelta
'M' - datetime
'O' - Oggetti (Python)
'S', 'a' - (byte-) stringa
'U' - Unicode
'V' - dati grezzi (nulli)