NumPy: From Zero to Sidekick

Saiba o básico para utilizar o NumPy!

Christian Costa
Data Hackers
3 min readNov 6, 2019

--

O Python não foi inicialmente criado para ser uma linguagem numérica e se você vem de outras linguagens já deve ter percebido que as chamadas “listas” em Python são diferentes do padrão de “arrays” que outras linguagens trazem. Entretanto, o Python acabou atraindo atenção da comunidade científica e para superar essas limitações a solução foi a criar packages específicos. O primeiro deles foi um package para matrizes chamado Numeric, que posteriormente teve um concorrente chamado Numarray, até que em 2006 um cara chamado Travis Oliphant unificou a comunidade através de um único package, o NumPy.

O NumPy (Numerical Python) é uma das bibliotecas científicas de Python, utilizada para criação de arrays multidimensionais e realização operações matemáticas. Os arrays do NumPy são mais rápidos e ocupam menos memória em comparação com as listas em Python. Além disso, esses arrays são uniformes, ou seja, diferente das listas neles é possível armazenar apenas dados do mesmo tipo.

Importando o NumPy

Para utilizar esse package, no inicio do arquivo escrevemos o conhecido import numpy as np , isso diz ao nosso editor que os recursos disponíveis nessa biblioteca serão utilizados ao longo do nosso código.

Criando arrays

Para criar um array utilizamos np.array([valores]) e passamos a sequência numérica.

Para criar um array com apenas uma linha basta passar os valores diretamente dentro dos colchetes [valor1, valor2, ...]. Se esse array tiver mais de uma linha, devemos abrir um novo par de colchetes para cada linha np.array([[1,2,3,4], [5,6,7,8]]) .

Além disso, pode-se passar mais de uma sequência e criar um array multidimensional. Vejamos o exemplo abaixo:

Criando arrays com range

Podemos também povoar um array usando números dentro de um range específico da forma como já estamos acostumados a usar range, por exemplo: range(n_final), range(n_inicial, n_final) e range(n_inicial, n_final, passo). Para o NumPy utilizamos arange() :

Arrays especiais

Há também a possibilidade de criar alguns arrays diferenciados, por exemplo, apenas com zeros, apenas com um’s ou com números aleatórios.

Para criar um array de zeros utilizamos np.zeros((linhas, colunas)) . Para criar apenas de um’s utilizamos np.ones((linhas, colunas)) . Para números aleatórios utilizamos np.random.random((linhas, colunas)) .
Seguem os exemplos:

Obtendo informações sobre um array

Também é fácil obter algumas informações sobre um array. Para saber quantas dimensões ele possui utilizamos ndim , para descobrir a forma (quantas linhas por quantas colunas) usamos nshape . Além disso podemos verificar qual o tamanho de cada elemento em bits usando itemsize e qual é o tipo de dado com dtype. Vamos dar uma olhada:

Acessando elementos

Para visualizar elementos específicos utilizamos nome_do_array[index] ou nome_do_array[index_inicial:index_final] de forma muito similar ao que já estamos acostumados a fazer com listas convencionais. Para obter um elemento de uma matriz passamos suas coordenadas, nome_da_matriz[linha, coluna]. Também é possível utilizar : para obter uma coluna inteira ou uma linha inteira de elementos. Abaixo os exemplos:

Para arrays multidimensionais utilizamos nome_do_array[dimensão, linha, coluna] :

Modificando a forma de um Array

Para alterar a forma de um array podemos utilizar nome_do_array.reshape(linhas, colunas)e nome_do_array.resize(linhas, colunas). Ao utilizar reshape mudamos a distribuição dos elementos sem alterar o array original. Por outro lado, o resize altera o array em si. Vejamos:

Matemática Básica

Também são possíveis operações matemáticas entre arrays e seus elementos com os operadores aritméticos que já estamos acostumados:

Os códigos desse post estão disponíveis no meu repositório do github. Além disso, coloquei os links das fontes utilizadas e do MyBinder para execução e manipulação do código online!

Pra saber como eu fiz pra renderizar as gists do Jupyter, dá uma olhada aqui.

--

--

Christian Costa
Data Hackers

“Pelos livros que eu tive acesso minha obrigação é espalhar pro resto”