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é!

Sobre Fábio dos Reis (1365 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

Escreva um comentário

Seu e-mail não será divulgado


*