Compreendendo os Tipos de Dados do NumPy

NumPyBeginner
Pratique Agora

Introdução

Este laboratório fornece um guia passo a passo para entender e gerenciar os vários tipos de dados no NumPy. NumPy (Numerical Python) é uma biblioteca poderosa que oferece suporte para arrays e matrizes grandes e multidimensionais, juntamente com uma coleção de funções matemáticas para operar nesses arrays de forma eficiente. Ao contrário das listas nativas do Python, os arrays NumPy são mais eficientes em termos de memória e mais rápidos para computações numéricas.

Você aprenderá a verificar, especificar e converter os tipos de dados dos arrays NumPy. Compreender os tipos de dados é crucial porque eles afetam tanto o uso de memória quanto o desempenho computacional. Todo o código será feito no arquivo main.py usando o editor de código, e você executará o script a partir do terminal. Essa abordagem prática ajudará você a assimilar esses conceitos fundamentais, que são cruciais para computação numérica e análise de dados.

Este é um Lab Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para completar cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 99%. Recebeu uma taxa de avaliações positivas de 94% dos estudantes.

Verificando o Tipo de Dados de um Array

Quando você cria um array NumPy, o NumPy infere automaticamente o tipo de dados mais adequado para seus elementos. Você pode verificar facilmente esse tipo de dados inferido usando o atributo dtype do array.

O atributo dtype informa qual tipo de dados o array contém (como inteiros, números de ponto flutuante, etc.) e quanta memória cada elemento utiliza. Essa informação é importante para entender como o NumPy lidará com operações matemáticas em seus dados.

Primeiro, abra o arquivo main.py no explorador de arquivos à esquerda. Adicionaremos código para criar um array simples e, em seguida, imprimir seu tipo de dados.

Adicione o seguinte código ao main.py:

## Create a NumPy array from a list of integers
## np.array() converts a Python list into a NumPy array
arr_int = np.array([1, 2, 3, 4, 5])

## Print the data type of the array
## .dtype shows the data type of array elements
print("Data type of arr_int:", arr_int.dtype)

Agora, salve o arquivo e execute-o a partir do terminal para ver a saída.

python main.py

Você verá o tipo de dados do array impresso no console. O tipo de inteiro específico (como int64) depende da arquitetura do seu sistema.

Data type of arr_int: int64

Isso confirma que o NumPy identificou corretamente os elementos como inteiros.

Especificando um Tipo de Dados na Criação

Embora a inferência automática de tipos do NumPy seja útil, muitas vezes você precisa definir explicitamente o tipo de dados de um array para eficiência de memória ou para atender aos requisitos de um cálculo específico. Você pode fazer isso usando o argumento dtype durante a criação do array.

Diferentes tipos de dados utilizam diferentes quantidades de memória:

  • int32 utiliza 4 bytes por elemento
  • int64 utiliza 8 bytes por elemento
  • float32 utiliza 4 bytes por elemento
  • float64 utiliza 8 bytes por elemento

Para arrays grandes, escolher o tipo de dados correto pode economizar memória significativa e potencialmente melhorar o desempenho.

Vamos criar um array e especificar seu tipo de dados como um float de 32 bits. Modifique seu arquivo main.py com o seguinte código. Você pode comentar ou remover o código da etapa anterior.

## Create an array and specify the data type as float32
## The dtype parameter tells NumPy to store each number as a 32-bit float
arr_float = np.array([1.0, 2.5, 3.8], dtype=np.float32)

## Print the data type and the array
print("Data type of arr_float:", arr_float.dtype)
print("Array arr_float:", arr_float)

Salve o arquivo e execute-o novamente.

python main.py

A saída mostrará que o array foi criado com o tipo de dados float32 que você especificou.

Data type of arr_float: float32
Array arr_float: [1.  2.5 3.8]

Você pode usar várias strings de tipo de dados ou objetos NumPy, como 'f4' para float32, 'i8' para int64, ou np.bool_ para booleano.

Convertendo o Tipo de Dados de um Array

Após a criação de um array, você pode precisar converter seu tipo de dados. O método .astype() é usado para esse propósito. Este método não altera o array original, mas sim retorna um novo array com o tipo de dados especificado.

A conversão de tipo é útil quando você precisa:

  • Realizar operações que exigem um tipo de dados específico
  • Reduzir o uso de memória convertendo para tipos menores
  • Preparar dados para funções que esperam certos tipos

Vamos criar um array de inteiros e, em seguida, convertê-lo para um array de ponto flutuante. Atualize seu arquivo main.py com o seguinte código:

## Create an integer array
## np.arange(5) creates an array with numbers from 0 to 4 (5 elements total)
original_arr = np.arange(5)
print("Original array:", original_arr)
print("Original dtype:", original_arr.dtype)

## Convert the array to float64
## .astype() creates a new array with the specified data type
converted_arr = original_arr.astype(np.float64)
print("Converted array:", converted_arr)
print("Converted dtype:", converted_arr.dtype)

Salve o arquivo e execute-o.

python main.py

A saída demonstra que original_arr permanece um array de inteiros, enquanto converted_arr é um novo array com o tipo de dados float64.

Original array: [0 1 2 3 4]
Original dtype: int64
Converted array: [0. 1. 2. 3. 4.]
Converted dtype: float64

Esta é uma maneira segura de realizar conversões de tipo sem perder seus dados originais.

Trabalhando com Outros Tipos de Dados

O NumPy suporta uma ampla gama de tipos de dados além de apenas inteiros e floats, incluindo booleanos e números complexos. Entender como o NumPy lida com eles pode ser muito útil.

Arrays booleanos são particularmente úteis para:

  • Filtrar dados (selecionar elementos que atendem a certas condições)
  • Operações lógicas
  • Mascarar arrays

Por exemplo, você pode criar um array de valores booleanos que representam condições Verdadeiro/Falso.

Vamos criar um array booleano. Atualize seu arquivo main.py:

## Create a boolean array
## np.bool_ is NumPy's boolean data type (stores True/False values)
arr_bool = np.array([True, False, True], dtype=np.bool_)

print("Boolean array:", arr_bool)
print("Boolean array dtype:", arr_bool.dtype)

Salve e execute o script.

python main.py

A saída mostrará o array booleano e seu tipo de dados correspondente.

Boolean array: [ True False  True]
Boolean array dtype: bool

Você também pode verificar se um tipo de dados pertence a uma categoria geral (como inteiro ou ponto flutuante) usando a função np.issubdtype(). Isso é útil para escrever funções que podem lidar com múltiplos tipos numéricos.

Resumo

Neste laboratório, você aprendeu os fundamentos de como trabalhar com tipos de dados no NumPy. Agora você entende:

  • O que são arrays NumPy e por que são mais eficientes do que listas Python
  • Como criar arrays usando np.array() e np.arange()
  • Como verificar o tipo de dados de um array usando o atributo .dtype
  • Como especificar um tipo de dados durante a criação do array com o parâmetro dtype
  • Como converter o tipo de dados de um array usando o método .astype()
  • As implicações de memória de diferentes tipos de dados (int32, int64, float32, float64)
  • Como trabalhar com arrays booleanos para filtragem e operações lógicas

Um bom entendimento dos tipos de dados é essencial para escrever código numérico eficiente e preciso com NumPy. Escolher o tipo de dados correto pode impactar significativamente tanto o uso de memória quanto o desempenho computacional em seus projetos de análise de dados.