Guia de Acesso Rápido Python – Numpy

GUIA DE ACESSO RÁPIDO PYTHON – NUMPY

Biblioteca

A biblioteca NumPY é a biblioteca mais importante para computação científica no Python. Ela fornece uma matriz-objeto multidimensional de alta performance e as ferramentas para trabalhar com essas matrizes.

Você pode baixar a versão para impressão aqui: Vooo-Insights-Python_numpy_acesso_rapido

Em geral, importa-se a biblioteca dessa forma:

>>> import numpy as np

Matrizes NumPy


Criando matrizes

>>> a = np.array([1, 2, 3])
>>> b = np.array([(1.5, 2, 3), (4, 5, 6,)], dtype=float)
>>> c = np.array([(1.5, 2, 3), (4, 5, 6,)], [(3, 2, 1), (4, 5, 6)], dtype=float)

Marcadores iniciais

Cria uma matriz de zeros

>>> np.zeros((3,4))

Cria uma matriz de uns

>>> np.ones((2,3,4), dtype=np.int16)

Cria uma matriz de valores arranjados por valor incremental

>>> d = np.arrange(10,25,5)

Cria uma matriz de valores arranjados por número de amostras

>>> np.linspace(0, 2, 9)

Cria uma matriz constante

>>> e = np.full((2, 2), 7)

Cria uma matriz identidade 2×2

>>> f = np.eye(2)

Cria uma matriz com valores aleatórios

>>> np.random.random((2, 2))

Cria uma matriz vazia

>>> np.empty((3, 2))

I/O

Salvando e carregando no disco

>>> np.save('minhamatriz', a)
>>> np.savez('matriz.npz', a, b)
>>> np.load('minhamatriz.npy)

Salvando e carregando arquivos de texto

>>> np.loadtxt('meuarquivo.txt')
>>> np.genfromtxt('meuarquivo.csv', delimiter=',')
>>> np.savetxt('minhamatriz.txt', a, delimiter=',')

Tipos de dados

Ponto flutuante de dupla precisão

>>> np.float32

Números complexos

>>> np.complex

Valores booleanos: TRUE, FALSE

>>> np.bool

Objeto Python

>>> np.object

String de largura fixa

>>> np.string_

Unicode de largura fixa

>>> np.unicode_

Inspecionando sua matriz

Dimensões

>>> a.shape

Largura da matriz

>>> len(a)

Número de dimensões

>>> b.ndim

Número de elementos

>>> e.size

Tipo de dados dos elementos

>>> b.dtype

Nome dos tipos de dados

>>> b.dtype.name

Converte uma matriz noutro tipo de dado

>>> b.astype(int)

Pedindo ajuda

>>> np.info(np.ndarray.dtype)

Matemática com matrizes

Operações aritméticas

Subtração

>>> g = a - b
array([[-0.5, 0., 0.], [-3., -3., -3.]])
>>> np.subtract(a, b)

Adição

>>> b + a
array([[2.5, 4., 6.], [5., 7., 9.]])
>>> np.add(b, a)

Divisão

>>> a / b
array([[0.6667, 1., 1.], [0.25, 0.4, 0.5]])
>>> np.divide(a, b)

Multiplicação

>>> a * b
array([[1.5, 4., 9.], [4., 10., 18.]])
>>> np.multiply(a, b)

Exponenciação

>>> np.exp(b)

Raiz quadrada

>>> np.sqrt(b)

Função seno

>>> np.sin(a)

Função cosseno

>>> np.cos(b)

Função logarítmica

>>> np.log(a, b)

Função ponto

>>> e.dot(f)
array([[7., 7.], [7., 7.]])

Comparações

Comparação de elementos

>>> a == b
array([[False, True, True], [False, False, False]])

Comparação de elementos

>>> a < 2

array([True, False, False])

Comparação de matrizes

>>> np.array_equal(a, b)

Funções agregadas

Soma de matrizes

>>> a.sum()

Valor mínimo dentro da matriz

>>> a.min()

Valor máximo numa linha

>>> b.max(axis=0)

Soma acumulada dos elementos

>>> b.cumsum(axis=0)

Média

>>> a.mean()

Mediana

>>> b.median()

Coeficiente de correlação

>>> a.corrcoef()

Desvio padrão

>>> np.std(b)

 


Copiando matrizes

Cria uma visão da matriz com os mesmos dados

>>> h = a.view()

Cria uma cópia da matriz

>>> np.copy(a)

Cria uma cópia profunda da matriz

>>> h = a.copy()

 


Ordenando matrizes

Ordena uma matriz

>>> a.sort()

Ordena os elementos de um eixo da matriz

>>> c.sort(axis=0)

 


Subconjuntos, cortes, indexação

Subconjuntos

Seleciona o elemento no segundo índice

>>> a[2]
3

Seleciona o elemento na linha 1 e coluna 2

>>> b[1, 2]
6.0

Cortes

Seleciona itens no índice 0 e 1

>>> a[0:2]
array([1, 2])

Seleciona itens nas linhas 0 e 1, na coluna 1

>>> b[0:2, 1]
array([2., 5.])

Seleciona os itens da linha 1

>>> b[:1]
array([[1.5, 2., 3.]])

O mesmo que [1, :, :]

>>> c[1, ...]
array([[[3., 2., 1.], [4., 5., 6.]]])

Matriz a invertida

>>> a[ : :-1]
array([3, 2, 1])

Indexação booleana

Seleciona itens de a menores que 2

>>> a[a > 2]
array([1])

Indexação fancy

Seleciona elementos (1,0), (0,1), (1,2) e (0,0)

>>> b[[1, 0, 1, 0], [0, 1, 2, 0]]
array([4., 2., 6., 1.5])

Seleciona um subconjunto das linhas e colunas das matrizes

>>> b[[1, 0, 1, 0]] [:, [0, 1, 2, 0]]

array([[4., 5., 6, 4.]), [1.5, 2., 3., 1.5]]]), [4., 5., 6., 4.]]]), [1.5, 2., 3., 1.5]]])

 

 


Manipulação de matrizes

Transpondo uma matriz

Permuta as dimensões da matriz

>>> i = np.transpose(b)
>>> i.T

Mudando o formato de uma matriz

Torna a matriz plana

>>> b.ravel()

Remodela, mas não muda os dados

>>> g.reshape(3, -2)

Adicionando/removendo elementos

Retorna nova matriz com forma(2,6)

>>> h.resize((2, 6))

Adiciona itens a uma matriz

>>> np.append(h, g)

Insere itens numa matriz

>>> np.insert(a, 1, 5)

Deleta itens de uma matriz

>>> np.delete(a, [1])

Combinando matrizes

Concatena matrizes

>>> np.concatenate((a, d), axis=0)
array([1, 2, 3, 10, 15, 20])

Empilha matrizes verticalmente

>>> np.vstack((a, b))
array([[1., 2., 3.], [1.5, 2., 3.], [4., 5., 6.]])
>>> np.r_[e,f]

Empilha matrizes horizontalmente

>>> np.hstack((e,f))
array([7.,7.,1.,0.], [7.,7.,0.,1.])

Cria matrizes empilhadas por coluna

>>> np.column_stack((a,d))
array([[1,10], [2,15], [3,20]])

Cria matrizes empilhadas por coluna

>>> np.c_[a,d]

Partindo matrizes

Parte a matriz horizontalmente no terceiro índice

>>> np.hsplit(a, 3)
[array([1]), array([2]), array([3])]

Parte a matriz horizontalmente no segundo índice

>>> np.vsplit(c,2)
[array([[[1.5,2.,1.], [4.,5.,6.]]]), array([[[3.,2.,3.], [4.,5.,6.]]])]

Baixe a versão para impressão:

Vooo-Insights-Python_numpy_acesso_rapido


Veja também: