NumPy - Tipos de Dados

NumPy suporta uma variedade muito maior de tipos numéricos do que Python. A tabela a seguir mostra diferentes tipos de dados escalares definidos em NumPy.

Sr. Não. Tipos de dados e descrição
1

bool_

Booleano (verdadeiro ou falso) armazenado como um byte

2

int_

Tipo inteiro padrão (igual ao C long; normalmente int64 ou int32)

3

intc

Idêntico a C int (normalmente int32 ou int64)

4

intp

Número inteiro usado para indexação (igual a C ssize_t; normalmente int32 ou int64)

5

int8

Byte (-128 a 127)

6

int16

Inteiro (-32768 a 32767)

7

int32

Inteiro (-2147483648 a 2147483647)

8

int64

Inteiro (-9223372036854775808 a 9223372036854775807)

9

uint8

Inteiro sem sinal (0 a 255)

10

uint16

Inteiro sem sinal (0 a 65535)

11

uint32

Inteiro sem sinal (0 a 4294967295)

12

uint64

Inteiro sem sinal (0 a 18446744073709551615)

13

float_

Abreviação de float64

14

float16

Flutuação de meia precisão: bit de sinal, expoente de 5 bits, mantissa de 10 bits

15

float32

Flutuação de precisão simples: bit de sinal, expoente de 8 bits, mantissa de 23 bits

16

float64

Flutuação de precisão dupla: bit de sinal, expoente de 11 bits, mantissa de 52 bits

17

complex_

Abreviação de complexo 128

18

complex64

Número complexo, representado por dois flutuadores de 32 bits (componentes reais e imaginários)

19

complex128

Número complexo, representado por dois flutuadores de 64 bits (componentes reais e imaginários)

Os tipos numéricos NumPy são instâncias de objetos dtype (tipo de dados), cada um com características únicas. Os dtypes estão disponíveis como np.bool_, np.float32, etc.

Objetos de tipo de dados (dtype)

Um objeto de tipo de dados descreve a interpretação de um bloco fixo de memória correspondente a uma matriz, dependendo dos seguintes aspectos -

  • Tipo de dados (inteiro, float ou objeto Python)

  • Tamanho dos dados

  • Ordem de bytes (little-endian ou big-endian)

  • No caso do tipo estruturado, os nomes dos campos, o tipo de dado de cada campo e parte do bloco de memória ocupada por cada campo.

  • Se o tipo de dados for um subarray, sua forma e tipo de dados

A ordem dos bytes é decidida prefixando '<' ou '>' ao tipo de dados. '<' significa que a codificação é little-endian (a menos significativa é armazenada no menor endereço). '>' significa que a codificação é big-endian (o byte mais significativo é armazenado no menor endereço).

Um objeto dtype é construído usando a seguinte sintaxe -

numpy.dtype(object, align, copy)

Os parâmetros são -

  • Object - Para ser convertido em objeto de tipo de dados

  • Align - Se verdadeiro, adiciona preenchimento ao campo para torná-lo semelhante a C-struct

  • Copy- Faz uma nova cópia do objeto dtype. Se for falso, o resultado é uma referência ao objeto de tipo de dados integrado

Exemplo 1

# using array-scalar type 
import numpy as np 
dt = np.dtype(np.int32) 
print dt

O resultado é o seguinte -

int32

Exemplo 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

O resultado é o seguinte -

int32

Exemplo 3

# using endian notation 
import numpy as np 
dt = np.dtype('>i4') 
print dt

O resultado é o seguinte -

>i4

Os exemplos a seguir mostram o uso do tipo de dados estruturados. Aqui, o nome do campo e o tipo de dados escalar correspondente devem ser declarados.

Exemplo 4

# first create structured data type 
import numpy as np 
dt = np.dtype([('age',np.int8)]) 
print dt

O resultado é o seguinte -

[('age', 'i1')]

Exemplo 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

O resultado é o seguinte -

[(10,) (20,) (30,)]

Exemplo 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']

O resultado é o seguinte -

[10 20 30]

Exemplo 7

Os exemplos a seguir definem um tipo de dados estruturado chamado student com um campo de string 'nome', um integer field 'idade' e um float field'marcas'. Este dtype é aplicado ao objeto ndarray.

import numpy as np 
student = np.dtype([('name','S20'), ('age', 'i1'), ('marks', 'f4')]) 
print student

O resultado é o seguinte -

[('name', 'S20'), ('age', 'i1'), ('marks', '<f4')])

Exemplo 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

O resultado é o seguinte -

[('abc', 21, 50.0), ('xyz', 18, 75.0)]

Cada tipo de dados integrado possui um código de caractere que o identifica exclusivamente.

  • 'b' - booleano

  • 'i' - inteiro (assinado)

  • 'u' - inteiro sem sinal

  • 'f' - ponto flutuante

  • 'c' - ponto flutuante complexo

  • 'm' - timedelta

  • 'M' - datetime

  • 'O' - objetos (Python)

  • 'S', 'a' - (byte-) string

  • 'U' - Unicode

  • 'V' - dados brutos (vazio)