Como criar um array no Python com NumPy
Como criar um array no Python com NumPy
Por Fábio dos Reis
O NumPy, (Numerical Python) é uma biblioteca de código aberto criada em 2006, sendo um pacote fundamental extensivamente empregado para computação numérica e científica de alta performance e velocidade em Python.
Escrita em linguagem C, é a implementação de estruturas de dados do tipo arrays preferida em Python, fornecendo um tipo de array de alta performance chamado de ndarray.
As operações sobre arrays do NumPy chegam a ser até duas ordens de magnitude mais rápidas do que om o emprego de listas comuns em Python, o que certamente é uma grande vantagem quando pensamos em grandes volumes de dados a serem manipulados e analisados, por exemplo em aplicações para Big Data e Computação Numérica / Científica.
O NumPy trabalha com um objeto de array especial de N dimensões poderoso chamado de ndarray (N-Dimensional Array / Array de N Dimensões), e possui diversas funções e métodos para sua manipulação, além de ouros tipos de objetos como masked arrays e matrizes, dos quais trataremos futuramente.
Muitas bibliotecas populares e altamente importantes dependem do NumPy para operar, como por exemplo as bibliotecas SciPy (para computação científica), Pandas (Análise de Dados), OpenCV, Scikit-learn e Keras (para Machine Learning / Deep Learning), entre centenas de outras bibliotecas.
Neste tutorial vamos mostrar como criar arrays de uma, duas e três dimensões usando o NumPy.
Módulo NumPy
O módulo NumPy fornece diversas funções para criação e manipulação de arrays. Os elementos em um array podem ser acessados por meio de seus números de índice (posição), e os índices de arrays iniciam sua contagem em 0, de modo que o primeiro elemento armazenado é o elemento de índice 0, o segundo elemento é o elemento de índice 1, e assim por diante.
Para trabalhar com o NumPy devemos importar o módulo correspondente usando a seguinte declaração no início do script:
import numpy as np
Não é obrigatório usar o alias np, mas vamos usá-lo em nossos tutoriais por se tratar de um nome bastante utilizado pela comunidade e recomendado na documentação oficial da biblioteca.
Arrays Unidimensionais com NumPy
Um array de uma dimensão, ou unidimensional, é semelhante a um vetor, que costumamos estudar em lógica de programação. Com o NumPy, podemos criar arrays de uma dimensão com muita facilidade, contendo elementos de um tipo específico.
Podemos criar um array usando o método np.array(), passando para ele uma lista com os elementos que comporão o array.
Vamos criar um array de uma dimensão contendo seis elementos numéricos, a partir de uma lista de valores comum:
# Importar o módulo numpy. Recomenda-se importá-lo como "np", # de acordo com a documentação oficial, para padronização. import numpy as np # Criar um array (objeto ndarray) de nome "números" a partir de # uma lista de valores com o método np.array() números = np.array([4,8,16,32,64,128]) # Opcionalmente, podemos especificar o tipo de dado dos objetos # do array com um segundo parâmetro. Por exemplo, np.int16 significa # um número inteiro de 16 bits, no intervalo de -32768 a 32767: # números = np.array([4,8,16,32,64,128], np.int16) # Elementos do tipo Int 16 bits. # Com a função type podemos ver o tipo do objeto criado print(type(números)) # Ver o conteúdo do array (valores alinhados à direita, ocupando # o mesmo número de casas de acordo com o maior número presente) print(números) # Ver elementos específicos no array por meio de seus números de índice # (sempre começando em zero) print(números[0]); print(números[1]); print(números[2]); print(números[-1])
Resultado:
<class 'numpy.ndarray'>
[ 4 8 16 32 64 128]
4
8
16
128
Podemos verificar o tipo dos elementos que compõem o array consultando o atributo dtype
números.dtype
Out: dtype('int32')
Arrays Bidimensionais com NumPy
Costumamos chamar de “matriz” a um array bidimensional (o NumPy possui um objeto específico para matrizes). Podemos criar um array bidimensional com NumPy a partir de uma lista de duas dimensões passada como parâmetro:
# Array bidimensional 2x3 # Cada colchete aninhado representa uma dimensão do array. # Dois pares de colchetes - [[ ]]- indicam duas dimensões: x = np.array([[1,2,3],[6,4,2]], np.int16) # Mostrar a matriz completa print(x) # Exibir elementos em posições específicas na matriz: print(x[0,0]); print(x[0,1]); print(x[0,2]); print(x[0,-1]) print(x[1,0]); print(x[1,1]); print(x[1,2]); print(x[1,-1])
Resultado:
[[1 2 3] [6 4 2]] 1 2 3 3 6 4 2 2
É possível trabalhar com linhas ou colunas individuais do array de duas dimensões, usando fatiamento (slicing). Vejamos alguns exemplos:
Colunas inteiras
# Imprimir colunas inteiras
print('Primeira coluna: ', x[:,0])
print('Segunda coluna: ', x[:,1])
print('Terceira coluna: ', x[:,2])
Saída:
Primeira coluna: [1 6] Segunda coluna: [2 4] Terceira coluna: [3 2]
Linhas Inteiras
# Imprimir linhas inteiras
print('Primeira linha: ', x[0,:])
print('Segunda linha: ', x[1,:])
Saída:
Primeira linha: [1 2 3] Segunda linha: [6 4 2]
Alguns atributos dos arrays
Podemos determinar o número de dimensões de um array (se é uni, bi ou tridimensional) com o atributo ndim
print(números.ndim) print(x.ndim)
Dimensões do array números: 1 Dimensões da matriz: 2
E também é possível determinar as dimensões de um array com o atributo shape (tamanho do array)
print('Tamanho do array números: ', números.shape) print('Tamanho da matriz x: ', x.shape)
Tamanho do array números: (6,) Tamanho da matriz x: (2, 3)
E ainda o número total de elementos de um array, por meio do atributo size:
print('Total de elementos do array números: ', números.size) print('Total de elementos da matriz x: ', x.size)
Total de elementos do array números: 6 Total de elementos da matriz x: 6
Outro atributo útil é o atributo itemsize, que permite descobrir o tamanho dos elementos de um array (número de bytes necessário para seu armazenamento).
print(números.itemsize) print(x.itemsize)
4 4
E o atributo flat permite iterar por um array multidimensional como se ele fosse unidimensional:
for i in x.flat: print(i, end=' ')
1 2 3 6 4 2
O parâmetro end=’ ‘ é usado para mostrar os itens em uma única linha, em vez de um item por linha.
Arrays Tridimensionais com NumPy
Damos o nome genérico de “cubo” a um array de três dimensões, contendo os eixos x, y e z no plano cartesiano. Podemos criar um array tridimensional (lista de três dimensões) com o NumPy usando o mesmo método usado anteriormente, o método np.array().
# Criar um array tridimensional # Cada colchete aninhado representa uma dimensão do array. # Três pares de colchetes - [[[ ]]]- indicam três dimensões: cubo = np.array([[[1,4,7],[3,5,2]],[[5,6,0],[7,4,1]],[[2,8,8],[0,3,6]]]) print('Array tridimensional:\n ', cubo) # Visualizar elementos específicos do cubo (array tridimensional): print('\nItem na posição 0,0,0: ', cubo[0,0,0]) print('Item na posição 1,0,0: ', cubo[1,0,0]) print('Item na posição 2,0,0: ', cubo[2,0,0])
Resultado:
Array tridimensional:
[[[1 4 7]
[3 5 2]]
[[5 6 0]
[7 4 1]]
[[2 8 8]
[0 3 6]]]
Item na posição 0,0,0: 1
Item na posição 1,0,0: 5
Item na posição 2,0,0: 2
Conclusão
É isso aí! Neste tutorial aprendemos a criar arrays usando NumPy n Python, incluindo arrays unidimensionais (“vetor”), arrays bidimensionais (“matriz”) e arrays tridimensionais (“cubo”).
Na próxima lição vamos estudar métodos para preencher os arrays com valores específicos, e como realizar operações aritméticas e matemáticas sobre os elementos de um array.
Enquanto isso, assista a um vídeo da Bóson Treinamentos sobre arrays com NumPy:
Até!
Escreva um comentário