Numpy — Arrays N-dimensionais

Realizando operações com arrays com desempenho “C”

Jhon Lucas
Jhon Lucas
Published in
5 min readSep 26, 2018

--

Introdução

NumPy é um projeto open-source criado por Travis Oliphant que significa Numerical Python. A biblioteca NumPy pode ser considerada como uma base para a computação numérica no Python e o objetivo de sua criação foi fazer com que a mesma seja utilizada para resolução de problemas matemáticos e científicos (ALI,2017).

Com Numpy é possível manipular arrays N-dimensionais, criar números randomicamente, realizar operações de álgebra linear, entre outras funções. Em aprendizado de máquina, NumPy é bastante utilizada para a manipulação de dataset com muitos dados, ou seja, matriz com um grande número de linhas e colunas.

O pacote NumPy é baseado na linguagem C, por conta disso o desempenho nas operações com vetores é superior as operações realizadas com vetores nativos do Python. Neste artigo faremos um comparativo para comprovarmos a superioridade do pacote NumPy.

Desempenho “C”

Instalação — NumPy

O processo de instalação do pacote NumPy é simples, tanto no Windows como no Linux, vamos seguir os mesmos passos. Para instalar o pacote você pode utilizar os gerenciadores de pacotes pip ou anaconda(conda):

Instalando o pacote NumPy usando o gerenciador de pacotes Python pip
Instalando o pacote NumPy usando o gerenciador de pacotes Python Anaconda

Criando um Array com NymPy

Para criarmos arrays utilizando o pacote NumPy é necessário realizar a importação do pacote. Convencionalmente usa-se “np” como identificador do pacote NumPy. Isso facilita a chamada de funções do pacote e também segue o padrão utilizado pela comunidade de Cientista de Dados:

Importação do pacote NumPy

Criando o array:

Array com NumPy

O código acima realiza de forma implícita a passagem de uma lista nativa do Python para função array do NumPy, que então cria um Array NumPy com os elementos da lista.

Para validarmos o tipo do objeto “array” podemos utilizar a função “type” do Python:

Verificando o tipo do objeto

Acima podemos ver que o objeto criado é um Array NumPy.

Criando uma Matriz com NumPy

Com NumPy podemos criar uma matriz de diversas maneiras, mas uma forma interessante seria utilizando as funções “arange” e “reshape”. A primeira função nos permite informar um range que vai definir quais os elementos que vão constar na matriz, já a segunda função nos permite informar qual vai ser a tamanho da matriz:

Outra forma de criarmos uma matriz:

Podemos utilizar algumas métodos do pacote NumPy para verificarmos algumas informações da matriz criado:

Dimensão da Matriz
Tamanho da Matriz — 3 x 4 (3 linhas e 4 colunas)

Operações Matemáticas com Matrizes usando NumPy

Soma de Matrizes

Soma de Matrizes

Obs.: Para soma de matrizes as mesmas devem ter o mesmo tamanho.

Subtração de Matrizes

Subtração de Matrizes

Obs.: Para subtração de matrizes as mesmas devem ter o mesmo tamanho.

Produto de Matrizes

Para realizar o produto de matrizes o número de colunas da 1ª matriz deve ser igual o número de linhas da 2ª matriz, caso as matrizes não satisfaçam esta condição, não será possível realizar o produto entre as matrizes. A seguir ilustração:

Produto das Matrizes usando NumPy:

Produto de Matrizes

Divisão de Matrizes

Divisão de Matrizes

Indexação de Matrizes

Através do NumPy é possível indexar uma matriz de diversas maneiras, a seguir veremos algumas delas:

Slicing

O método de indexação de matrizes por slicing (fatiar — tradução livre) permite que você informe uma “fatia” para cada dimensão da matriz, a seguir veremos alguns exemplos através de código implementado no Jupyter Notebook:

Slicing em Arrays

Obs.: É importante lembrar que a indexação ocorre de 0 a n-1, pois em Python a indexação de arrays se inicia em zero. Para melhor entendimento vamos a um exemplo: Se queremos a segunda e terceira linha de uma matriz, vamos informar que a nosso índice se inicia em 1 e vai até 3, assim como no exemplo acima, na célula 20 do Jupyer Notebook na 4ª linha de código, caso coloquemos que o índice será de 1 até 2, o Python nos retornará apenas a segunda linha da matriz. Isso é algo básico, mas que muita das vezes nos esquecemos, então por conta disso achei importante dar um esclarecimento.

Indexação booleana

A indexação booleana é utilizada para selecionarmos apenas os elementos que satisfazem uma determinada condição. A seguir um exemplo:

Indexação booleana

Validando a eficiência de NumPy

Para mostrarmos a eficiência de NumPy, efetuamos a soma de 100 milhões de elementos usando Python “Nativo” e Numpy, comparando o tempo de execução dos códigos:

NumPy vs Python (Nativo)

Através da figura acima é possível vermos o quão poderoso é NumPy no que diz respeito à criação e manipulação de arrays, porém é válido lembrar que isto também depende de recursos computacionais disponíveis no PC utilizado.

E por aqui findamos este post, espero que tenham gostado e que de alguma forma este post possa ter contribuído com o seu “baú” de conhecimento, um grande abraço e até a próxima!

Referências:

ALI, Abder Rahman. Introdução ao NumPy. 2017. Disponível em: <https://code.tutsplus.com/pt/tutorials/introducing-numpy--cms-28703>. Acesso em: 20 out. 2018.

PYTHON Numpy Tutorial. Disponível em: <http://cs231n.github.io/python-numpy-tutorial/>. Acesso em: 24 out. 2018.

QUICKSTART Tutorial. Disponível em: <https://docs.scipy.org/doc/numpy-1.15.1/user/quickstart.html>. Acesso em: 19 out. 2018.

TUTORIAL Básico de NumPy. 2011. Disponível em: <http://pythonize.org/tutorial-basico-numpy.html>. Acesso em: 22 out. 2018.

--

--

Jhon Lucas
Jhon Lucas

Senior Data Engineer @ Spectral | AWS Community Builder | Co-founder @ Data Train