Biblioteca de dados NumPy

NumPy — uma biblioteca de código aberto para a linguagem de programação Python, que implementa um grande número de operações para trabalhar com vetores, matrizes e arrays. 

Algoritmos matemáticos implementados em linguagens interpretadas (por exemplo, Python) costumam ser muito mais lentos do que aqueles implementados em linguagens compiladas (por exemplo, Fortran, C, Java). A biblioteca NumPy fornece implementações de algoritmos computacionais (na forma de funções e operadores) otimizados para trabalhar com matrizes multidimensionais. 
Como resultado, qualquer algoritmo que possa ser expresso como uma sequência de operações em arrays (matrizes) e implementado usando NumPy é rápido o suficiente.

NumPy (Numeric Python) é uma biblioteca matemática básica para trabalhar com dados. Esta biblioteca é a base de outras bibliotecas para trabalhar com aprendizado de máquina ou tarefas de análise de dados (por exemplo, Pandas (trabalhando com dados tabulares), SciPy (métodos de otimização e cálculos científicos), < tt>Matplotlib (plotagem)).

 

Trabalhando com NumPy

Para começar a trabalhar com a biblioteca numpy, você precisa importá-la no início do programa como qualquer outra biblioteca, importar numpy ou então (que é usado com mais frequência) importar numpy como np



Vetores NumPy

Um vetor (ou array) em NumPy é um conjunto ordenado de dados homogêneos.

Um elemento de um vetor pode ser acessado por seu índice, assim como é feito nas listas. Cada elemento do vetor tem seu lugar específico, que é definido durante a criação.
Todos os elementos do vetor têm o mesmo tipo de dados (int, str, bool, etc.).

Criando um vetor
Para criar um vetor, você precisa usar o construtor numpy.array (um objeto iterável).
Os parênteses indicam qualquer objeto iterável: tupla, lista, intervalo(), etc.
 
Exemplo 
importar numpy como np importar numpy como np print(np.array((1,2,3,4,5))) # vetor da tupla print(np.array([1,2,3,4,5])) # vetor da lista print(np.array(range(5))) # vetor do gerador

Trabalhando com elementos vetoriais

Trabalhar com elementos de vetor é o mesmo que com elementos de lista, você pode acessar elementos por seu índice e também fazer fatias.

Exemplo
1
2
3
4
5
6
7
importar numpy como np V = np.array((1,2,3,4)) imprimir(V[0]) # 1 imprimir(V[-1]) # 4 print(V[1:-2]) # [2] print(V[::2]) # [1 3]

Selecionando elementos vetoriais
Para selecionar elementos do vetor, você pode usar um vetor contendo valores lógicos (expressões). Serão selecionados os elementos do vetor que serão True no vetor com valores booleanos.
 

Exemplo
importar numpy como np V = np.array([1,-2,3,-4,5]) # seleciona os dois primeiros elementos do vetor print(V[np.array((Verdadeiro, Verdadeiro, Falso, Falso, Falso))]) # [ 1 -2] # seleciona elementos vetoriais positivos print(V[V > 0]) # [1 3 5] # seleciona elementos vetoriais pares print(V[V % 2 == 0]) # [-2 -4]

Formas de criar arrays e matrizes

Outras maneiras úteis de criar arrays e matrizes.

Exemplo
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
onze
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
trinta
31
32
33
34
35
36
37
importar numpy como np # Matriz unidimensional de zeros print(np.zero(5)) #[0. 0.0.0.0.] # Matriz bidimensional de zeros print(np.zeros((2, 3))) # [[0. 0,0.] #[0. 0.0.]] # Array 3D de unidades print(np.ones((2,3,4))) # [[[1. 1. 1. 1.] # [1. 1. 1. 1.] # [1. 1. 1. 1.]] # # [[1. 1. 1. 1.] # [1. 1. 1. 1.] # [1. 1. 1. 1.]]] # Matriz de zeros com indicação de tipo print(np.zeros(5, dtype=np.int)) # [0 0 0 0 0] # Um array baseado em uma lista de listas print(np.array([[1,2.0],[0,0],(1,3.)])) # [[1. 2.] #[0. 0.] # [1. 3.]] # Uma matriz preenchida com elementos de uma progressão aritmética começando em 0 print(np.arange(10)) # [0 1 2 3 4 5 6 7 8 9] # Progressão aritmética com indicação de tipo print(np.arange(2, 10, dtype=np.float)) # [2. 3. 4. 5. 6. 7. 8. 9.] # Progressão aritmética com diferença não inteira print(np.arange(2, 3, 0.1)) # [2. 2,1 2,2 2,3 2,4 2,5 2,6 2,7 2,8 2,9] # Progressão aritmética com um determinado número de termos print(np.linspace(1., 4., 6)) # [1. 1,6 2,2 2,8 3,4 4. ]

Zero elementos da matriz
 
Função não-zero(V) 
O resultado é uma tupla de arrays. Cada um desses arrays corresponde a um eixo separado do array original e contém índices com elementos diferentes de zero neste array.
V - uma matriz NumPy ou objeto semelhante a uma matriz.
Retorna uma Python tupla (tupla) - tupla com matrizes de índices de elementos diferentes de zero da matriz original V.
 
Função count_nonzero(V) 
Esta função é baseada no método interno  __bool__() de objetos Python que verifica se eles são verdadeiros. Segue-se que a função  count_nonzero() é realmente capaz de trabalhar não apenas com números, mas também com quaisquer objetos que podem ser verdadeiros ou falsos.
V - uma matriz NumPy ou objeto semelhante a uma matriz.
A função retorna o número de elementos de matriz diferentes de zero ao longo do eixo especificado.

Matrizes diagonais

A função  diag(V, k=0) permite extrair uma diagonal de uma matriz, bem como construir matrizes diagonais a partir de matrizes unidimensionais.
V - Um objeto tipo array, arrays bidimensionais ou unidimensionais, matrizes, listas ou tuplas, ou qualquer função ou objeto com um método que retorna uma lista ou tupla.
k - índice da diagonal (opcional).
O padrão é k = 0 que corresponde à diagonal principal. Um valor k positivo move a diagonal para cima, um valor negativo a move para baixo.

A função retorna array NumPy (ndarray) - a diagonal da matriz especificada ou uma matriz diagonal da matriz unidimensional especificada.

Matrizes

2D NumPy

Um elemento de uma matriz bidimensional é acessado especificando as coordenadas do elemento, primeiro o número da linha e depois o número da coluna. As coordenadas são separadas por vírgulas. 
Qualquer array pode ser convertido em um array bidimensional usando a função reshape().

Exemplo
1
2
3
4
5
6
7
8
# A função reshape() altera a forma de um array sem alterar seus dados. x = np.arange(12).reshape(3, 4) print(x) # [[ 0 1 2 3] # [ 4 5 6 7] # [8 9 10 11]] # Para acessar um elemento, especifique suas coordenadas separadas por vírgulas print(x[1, 2]) # 6