Numpy — Arrays N-dimensionais
Realizando operações com arrays com desempenho “C”
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.
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):
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:
Criando o array:
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:
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:
Operações Matemáticas com Matrizes usando NumPy
Soma de Matrizes
Obs.: Para soma de matrizes as mesmas devem ter o mesmo tamanho.
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:
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:
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:
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:
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.