A função np.array é um pilar fundamental na biblioteca NumPy, servindo como a principal ferramenta para a criação de arrays multidimensionais (ndarrays). Este guia explora sua sintaxe, parâmetros, exemplos práticos e considerações importantes.
Sintaxe Básica
A assinatura da função é:
numpy.array(object, dtype=None, copy=True, order='K', subok=False, ndmin=0)
Parâmetros Detalhados:
object: A fonte dos dados. Pode ser uma lista Python, tupla, outro array NumPy, um gerador, entre outros.dtype: (Opcional) Define o tipo de dado dos elementos do array (ex:np.int32,np.float64). Se omitido, o NumPy tentará inferir o tipo automaticamente.copy: Por padrão éTrue, indicando que os dados de entrada devem ser copiados. Definir comoFalsetenta evitar a cópia se os dados já estiverem em um formato compatível.order: (Opcional) Especifica a ordem da memória:'C'para ordem por linha (C-style),'F'para ordem por coluna (Fortran-style), ou'K'para manter a ordem original do objeto de entrada.subok: Por padrão éFalse. SeTrue, permite que a função retorne subclasses dendarray.ndmin: Especifica o número mínimo de dimensões que o array resultante deve ter.
Exemplos de Uso
- Array Unidimensional a partir de uma Lista
import numpy as np
lista_simples = [5, 10, 15, 20]
array_unidim = np.array(lista_simples)
print(array_unidim)
Saída:
[ 5 10 15 20]
- Array Bidimensional a partir de Listas Aninhadas
lista_aninhada = [[1, 2, 3], [4, 5, 6]]
array_bidim = np.array(lista_aninhada)
print(array_bidim)
Saída:
[[1 2 3]
[4 5 6]]
- Especificando o Tipo de Dado
dados_inteiros = [10, 20, 30]
array_float = np.array(dados_inteiros, dtype=np.float32)
print(array_float)
Saída:
[10. 20. 30.]
- Garantindo Mínimo de Dimensões com
ndmin
dados = [7, 8, 9]
array_3d = np.array(dados, ndmin=3)
print(array_3d)
Saída:
[[[7 8 9]]]
Diferenças Cruciais: Listas Python vs. Arrays NumPy
| Característica | Listas Python | Arrays NumPy (ndarray) |
|---|---|---|
| Tipos de Elementos | Podem misturar tipos | Todos os elementos devem ter o mesmo tipo |
| Performance | Operações lentas (loops) | Operações rápidas (vetorizadas) |
| Uso de Memória | Maior | Menor (para tipos homogêneos) |
| Suporte Multidimensional | Implícito (listas aninhadas) | Nativo e eficiente |
| Operações Matemáticas | Requer código explícito (loops, map) | Suporte direto (+, -, *, /) |
Operações Comuns
- Acessando Atributos do Array
matriz = np.array([[10, 20], [30, 40], [50, 60]])
print("Número de Dimensões:", matriz.ndim)
print("Formato (Shape):", matriz.shape)
print("Total de Elementos:", matriz.size)
print("Tipo de Dado:", matriz.dtype)
Saída:
Número de Dimensões: 2
Formato (Shape): (3, 2)
Total de Elementos: 6
Tipo de Dado: int64
- Fatiamento e Indexação
sequencia = np.arange(10) # Cria um array de 0 a 9
print(sequencia[3:7]) # Seleciona elementos do índice 3 até (mas não incluindo) o 7
Saída:
[3 4 5 6]
- Operações Aritméticas Vetorizadas
vetor_a = np.array([1, 2, 3])
vetor_b = np.array([4, 5, 6])
soma_elementos = vetor_a + vetor_b
multiplicacao_escalar = vetor_a * 10
print("Soma:", soma_elementos)
print("Multiplicação por Escalar:", multiplicacao_escalar)
Saída:
Soma: [5 7 9]
Multiplicação por Escalar: [10 20 30]
Pontos de Atenção
- Consistência de Tipo: Um array NumPy exige que todos os seus elementos sejam do mesmo tipo. Se tipos diferentes forem fornecidos, o NumPy realizará uma coerção para um tipo mais genérico (ex: inteiros e floats resultarão em floats).
- Eficiência de Memória: Arrays NumPy são significativamente mais eficientes em termos de uso de memória comparados às listas Python, especialmente para grandes volumes de dados numéricos.
- Visão vs. Cópia: Ao utilizar
copy=False, a operação pode retornar uma "visão" (view) dos dados originais em vez de uma cópia independente. Modificações na visão podem alterar o array original.