NumPy é a pedra angular da computação científica em Python, e seu poder reside em grande parte em seu objeto de array N-dimensional, o ndarray. Dominar ndarrays é essencial para o uso eficaz do NumPy. Este tutorial fornece uma introdução abrangente aos ndarrays, cobrindo sua criação, atributos e operações fundamentais.
Sumário
Definição de Ndarray
Um NumPy ndarray (array N-dimensional) é um contêiner multidimensional homogêneo que contém elementos do mesmo tipo e tamanho. Considere-o uma versão altamente otimizada e sofisticada de uma lista Python, capaz de lidar com dados em várias dimensões (1D, 2D, 3D e superiores). Ao contrário das listas Python, que podem conter elementos de tipos de dados variados, os ndarrays impõem homogeneidade de tipo, resultando em ganhos de desempenho substanciais. Essa homogeneidade permite operações vetorizadas — aplicando operações a todo o array simultaneamente em vez de elemento por elemento, melhorando drasticamente a velocidade.
Características principais do ndarray:
- Homogêneo: Todos os elementos compartilham o mesmo tipo de dados.
- Multidimensional: Representa dados em várias dimensões (vetores 1D, matrizes 2D, tensores 3D, etc.).
- Tamanho fixo: O tamanho do array é fixado na criação e o redimensionamento geralmente envolve a criação de um novo array.
- Operações vetorizadas: Suporta operações eficientes elemento a elemento e em nível de array.
- Eficiência de memória: Armazena dados em blocos de memória contíguos, melhorando o desempenho.
Criação de Ndarray
Criar ndarrays é simples usando as funções do NumPy:
import numpy as np
# A partir de uma lista
arr_1d = np.array([1, 2, 3, 4, 5])
arr_2d = np.array([[1, 2, 3], [4, 5, 6]])
# Usando funções especializadas
arr_zeros = np.zeros((2, 3)) # Array de zeros
arr_ones = np.ones((3, 2)) # Array de uns
arr_arange = np.arange(10) # Sequência de números
arr_linspace = np.linspace(0, 1, 5) # Números igualmente espaçados
arr_random = np.random.rand(2, 2) # Números aleatórios
print(arr_1d)
print(arr_2d)
print(arr_zeros)
print(arr_ones)
print(arr_arange)
print(arr_linspace)
print(arr_random)
Atributos de Ndarray
Os objetos Ndarray oferecem vários atributos cruciais que fornecem informações sobre sua forma, tipo de dados, tamanho e muito mais. Entender esses atributos é fundamental para a manipulação eficaz de ndarrays.
ndim
: O número de dimensões do array (eixos).shape
: Uma tupla indicando o tamanho do array ao longo de cada dimensão (por exemplo, (3, 4) para uma matriz 3×4).size
: O número total de elementos.dtype
: O tipo de dados dos elementos (por exemplo,int32
,float64
,bool
).itemsize
: O tamanho (em bytes) de cada elemento.nbytes
: O tamanho total (em bytes) do array (itemsize * size
).
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print("Número de dimensões:", arr.ndim)
print("Forma:", arr.shape)
print("Tamanho:", arr.size)
print("Tipo de dados:", arr.dtype)
print("Tamanho do item:", arr.itemsize)
print("Bytes totais:", arr.nbytes)
Operações Básicas de Ndarray
NumPy fornece operações eficientes elemento a elemento e em nível de array. Operações aritméticas simples (+, -, *, /, //, %, **) são vetorizadas:
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
print("Adição:", arr1 + arr2)
print("Subtração:", arr1 - arr2)
print("Multiplicação:", arr1 * arr2)
print("Divisão:", arr1 / arr2)
Operações mais avançadas (como multiplicação de matrizes, produto escalar, etc.) também estão prontamente disponíveis.