#3 - Tipos de dados no NumPy

Introdução sobre os tipos de dados no Numpy.

Imagem de capa

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

Tipos de Dados & Descrição
1

bool_

Booleano (Verdadeiro ou Falso) armazenado como um byte

2

int_

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

3

intc

Idêntico o int do C (normalmente int32 ou int64)

4

intp

Inteiro usado para indexação (o mesmo que C ssize_t; normalmente, int32 ou int64)

5

int8

Byte (-128 to 127)

6

int16

Inteiro (-32768 to 32767)

7

int32

Inteiro (-2147483648 to 2147483647)

8

int64

Inteiro (-9223372036854775808 to 9223372036854775807)

9

uint8

Unsigned integer (0 to 255)

10

uint16

Inteiro não assinado (0 to 65535)

11

uint32

Inteiro não assinado (0 to 4294967295)

12

uint64

Inteiro não assinado (0 to 18446744073709551615)

13

float_

Taquigrafia para float64

14

float16

Half precision float: sign bit, 5 bits exponent, 10 bits mantissa

15

float32

Single precision float: sign bit, 8 bits exponent, 23 bits mantissa

16

float64

Double precision float: sign bit, 11 bits exponent, 52 bits mantissa

17

complex_

Taquigrafia para complex128

18

complex64

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

19

complex128

Número complexo, representado por dois floats 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 tipos 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 do bloco fixo de memória correspondente a uma matriz, dependendo dos seguintes aspectos -

A ordem dos bytes é decidida prefixando ‘<’ ou ‘>’ para o tipo de dados. ‘<’ significa que a codificação é little-endian (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 -

Exemplo 1

# usando o tipo array-scalar
import numpy as np
dt = np.dtype(np.int32)
print dt

A saída é a seguinte -

int32

Exemplo 2

#int8, int16, int32, int64 podem ser substituidos pela string equivalente a 'i1', 'i2','i4', etc.
import numpy as np

dt = np.dtype('i4')
print dt

A saída é a seguinte -

int32

Exemplo 3

# utilizando a notação endian
import numpy as np
dt = np.dtype('>i4')
print dt

A saída é a seguinte -

>i4

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

Exemplo 4

# primeiro crie um tipo de dados estruturado
import numpy as np
dt = np.dtype([('age',np.int8)])
print dt

A saída é a seguinte -

[('age', 'i1')]

Exemplo 5

# agora aplique-o ao objeto ndarray
import numpy as np

dt = np.dtype([('age',np.int8)])
a = np.array([(10,),(20,),(30,)], dtype = dt)
print a

A saída é a 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']

A saída é a seguinte -

[10 20 30]

Exemplo 7

Os exemplos a seguir definem um tipo de dados estruturado chamado aluno com um campo de cadeia ‘nome’, um campo inteiro ‘idade’ e um campo float ‘marcas’. Este dtype é aplicado ao objeto ndarray.

import numpy as np
aluno = np.dtype([('nome','S20'), ('idade', 'i1'), ('marcas', 'f4')])
print student

A saída é a seguinte -

[('nome', 'S20'), ('idade', 'i1'), ('marcas', '<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

A saída é a seguinte -

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

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

Fonte traduzida com adaptações: NumPy - Data Types