Introdução
Neste laboratório, abordaremos os tipos de dados na biblioteca NumPy do Python. Passaremos pela sintaxe do objeto dtype e seus parâmetros.
Dicas da VM
Após a inicialização da VM, clique no canto superior esquerdo para mudar para a aba Notebook e acessar o Jupyter Notebook para praticar.
Às vezes, pode ser necessário aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação das operações não pode ser automatizada devido às limitações do Jupyter Notebook.
Se você enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão, e resolveremos o problema prontamente para você.
Compreendendo o Objeto dtype do NumPy
No NumPy, todos os itens de um array são objetos de tipo de dados que também são conhecidos como NumPy dtypes. O objeto de tipo de dados é usado para implementar o tamanho fixo da memória correspondente a um array.
Ele nos fornece principalmente informações sobre o seguinte:
- O tipo de dados (por exemplo,
integer,floatouobjectdo Python) - O tamanho dos dados
- A ordem dos bytes (little-endian ou big-endian)
- No caso de um tipo estruturado, ele nos informa sobre os nomes dos campos, o tipo de dados de cada campo e a parte do bloco de memória ocupada por cada campo.
- No caso, se o tipo de dados for um subarray, ele nos informa sobre sua forma e tipo de dados
Criando um objeto dtype do NumPy
A seguir está a sintaxe necessária para criar o objeto dtype:
numpy.dtype(object, align, copy)
A seguir está uma descrição dos argumentos do construtor mencionado acima:
- object: Este argumento é usado para representar o objeto que deve ser convertido para o tipo de dados.
- align: É um argumento opcional. Ele é usado para adicionar preenchimento aos campos para corresponder ao que um compilador C produziria para uma estrutura C semelhante. Este argumento pode ser definido como qualquer valor booleano.
- copy: Este argumento é usado para criar uma cópia do objeto
dtypee também é um argumento opcional.
Tipos de Dados Numéricos em NumPy
A biblioteca NumPy fornece principalmente uma gama maior de tipos de dados numéricos do que a fornecida pelo Python. A lista de tipos de dados numéricos é fornecida na tabela abaixo:
| SN | Tipo de dado | Descrição |
|---|---|---|
| 1 | bool_ |
Isso é usado para representar o valor booleano indicando verdadeiro ou falso. É armazenado como um byte. |
| 2 | int_ |
Este é o tipo padrão de um inteiro. É idêntico ao tipo long em C, que contém principalmente um inteiro de 64 bits ou 32 bits. |
| 3 | intc |
Isso é semelhante ao inteiro C (C int), pois representa um int de 32 ou 64 bits. |
| 4 | intp |
Isso é usado para representar os inteiros que são usados para indexação. |
| 5 | int8 |
Este é o inteiro de 8 bits idêntico a um byte. A faixa de valores é de -128 a 127. |
| 6 | int16 |
Este é o inteiro de 2 bytes (16 bits) e a faixa é de -32768 a 32767. |
| 7 | int32 |
Este é o inteiro de 4 bytes (32 bits). A faixa é de -2147483648 a 2147483647. |
| 8 | int64 |
Este é o inteiro de 8 bytes (64 bits) e a faixa é de -9223372036854775808 a 9223372036854775807. |
| 9 | uint8 |
Este é um inteiro sem sinal de 1 byte (8 bits). |
| 10 | uint16 |
Este é um inteiro sem sinal de 2 bytes (16 bits). |
| 11 | uint32 |
Este é um inteiro sem sinal de 4 bytes (32 bits). |
| 12 | uint64 |
Este é um inteiro sem sinal de 8 bytes (64 bits). |
| 13 | float_ |
Isso é idêntico a float64. |
| 14 | float16 |
Isso é usado para representar o float de meia precisão. 5 bits são reservados para o expoente. 10 bits são reservados para a mantissa e 1 bit é reservado para o sinal. |
| 15 | float32 |
Isso é usado para representar o float de precisão simples. 8 bits são reservados para o expoente, 23 bits são reservados para a mantissa e 1 bit é reservado para o sinal. |
| 16 | float64 |
Isso é usado para representar o float de dupla precisão. 11 bits são reservados para o expoente, 52 bits são reservados para a mantissa, 1 bit é usado para o sinal. |
| 17 | complex_ |
Isso é idêntico a complex128. |
| 18 | complex64 |
Isso é usado para representar o número complexo onde a parte real e imaginária compartilham 32 bits cada. |
| 19 | complex128 |
Isso é usado para representar o número complexo onde a parte real e imaginária compartilham 64 bits cada. |
Caracteres usados para representar dtype em NumPy
Aqui está a lista de caracteres que são usados para representar dtype no NumPy:
i: inteiro (integer)b: booleano (boolean)u: inteiro sem sinal (unsigned integer)f: ponto flutuante (float)c: ponto flutuante complexo (complex float)m: timedeltaM: datetimeO: objeto (object)S: stringU: string UnicodeV: o bloco fixo de memória para outros tipos (void)
Exemplos
Exemplo 1: Encontrando o Tipo de Dados de um Array
Vamos tentar descobrir o tipo de dados do array contendo strings:
import numpy as np
ar1 = np.array(['cadeira', 'livro', 'caderno'])
print(ar1.dtype)
Saída:
<U8
Exemplo 2: Construindo um Objeto dtype
Podemos criar um objeto dtype usando a função numpy.dtype.
import numpy as np
dt1 = np.dtype(np.int64)
print (dt1)
Saída:
int64
Exemplo 3: Usando a Representação Mais Curta de Tipos de Dados Numéricos
No exemplo a seguir, usaremos a representação mais curta de tipos de dados numéricos:
import numpy as np
a = np.dtype('i4')
print (a)
Saída:
int32
Exemplo 4: Criando um Objeto dtype Estruturado
Criaremos um tipo de dado estruturado e o aplicaremos a um objeto ndarray:
import numpy as np
## info com chave e valor
a = np.dtype([('matricula',np.int16)])
print(a)
a = np.array([(101,),(201,),(301,)], dtype=a)
print(a)
Saída:
[('matricula', '<i2')]
[(101,) (201,) (301,)]
Exemplo 5: Mudando o Tipo de Dados
No exemplo a seguir, mudaremos o tipo de dados de float para integer usando int como valor de parâmetro:
import numpy as np
ar= np.array([1.1, 2.1, 3.1])
newarr = ar.astype(int)
print(newarr)
print(newarr.dtype)
Saída:
[1 2 3]
int64
Resumo
Neste laboratório, abordamos o conceito de tipos de dados em um array. Vimos como o objeto dtype é usado para especificar o tipo de dados dos valores, sua sintaxe e os parâmetros necessários para o objeto dtype. Também cobrimos vários tipos de dados numéricos e, em seguida, alguns exemplos para sua compreensão.