NumPy

Numpy é um pacote fundamental para programação científica com Python. Ele traz consigo uma variedade de operações matemáticas, principalmente referente à operações algébricas com dados N-dimensionais!


In [ ]:
import numpy as np

A base de seu funcionamento é o np.array, que retorna o objeto array sobre o qual todas as funções estão implementadas


In [ ]:
a = np.array([1, 2, 3])
print(repr(a), a.shape, end="\n\n")

b = np.array([(1, 2, 3), (4, 5, 6)])
print(repr(b), b.shape)

O array traz consigo diversos operadores já implementados:


In [ ]:
print(b.T, end="\n\n") # transpoe uma matriz
print(a + b, end="\n\n") # soma um vetor linha/coluna a todas as linhas/colunas de uma matriz
print(b - a, end="\n\n") # subtrai um vetor linha/coluna a todas as linhas/colunas de uma matriz

# multiplica os elementos de um vetor linha/coluna 
# a todos os elementos das linhas/colunas de uma matriz
print(a * b, end="\n\n") 

print(a**2, end="\n\n") # eleva os elementos ao quadrado

O Numpy traz consigo diversas operações matemáticas implementadas, as quais podem ser aplicadas sobre um valor ou um array de valores.

OBS: podemos ver a aplicações dessas funções como uma operação de transformação (map)


In [ ]:
print(10*np.sin(1)) # seno trigonométrico de 1
print(10*np.sin(a)) # seno trigonométrico de cada elemento de a

Uma operação booleana pode ser aplicada sobre todos os elementos de um array, retornando um array de mesmas dimensões com o resultado da operação


In [ ]:
b<35

Existem também operações utilitárias pré-definidas em um array


In [ ]:
print(b,end="\n\n")
print('Axis 1: %s' % b[0], end="\n\n") # retorna um vetor
print(np.average(b), end="\n\n") # tira a média dos elementos
print(np.average(b, axis=1), end="\n\n") # tira a média dos elementos dos vetores no eixo 1
print(b.sum(), end="\n\n") # retorna as somas dos valores
print(b.sum(axis=1), end="\n\n") # retorna as somas dos valores no eixo 1
print(b.min(), end="\n\n") # retorna o menor valor
print(b.max(), end="\n\n") # retorna o maior valor

Existem também funções para gerar arrays pré-inicializados


In [ ]:
print(np.zeros((3, 5)), end="\n\n") # array de zeros com dimensões [3,5]
print(np.ones((2,3,4)), end="\n\n------------\n\n") # array de uns com dimensões [2,3,4]
print(np.full((2, 2), 10), end="\n\n") # array de 10 com dimensões [2,2]
print(np.arange(10, 30, 5), end="\n\n") # valores de 10 a 30 com passo 5
print(np.random.rand(2, 3), end="\n\n") # array cde dimensao [2,3] com valores aleatórios

Podemos selecionar intervalos do array, permitindo recuperar apenas uma porção dele


In [ ]:
d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
d

In [ ]:
d[:, 0] # todas as linhas (:) da primeira coluna (0)

In [ ]:
d[:, 1] # todas as linhas (:) da segunda coluna (1)

In [ ]:
d[:, 0:2] # todas as linhas (:) das colunas de 0 à 2

In [ ]:
d[:, 2] # todas as linhas (:) da terceira coluna (2)

O Numpy conta também com funções para salvar/ler arrays de arquivos


In [ ]:
x = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
np.save('/tmp/x.npy', x)
del(x)
x = np.load('/tmp/x.npy')
print(x)

Exercícios opcionais

100 exercícios de NumPy para expandir seus horizones

https://github.com/rougier/numpy-100


In [ ]: