Articles

Python: Vetores, Matrizes e arrays com NumPy

nesta aula, vamos abordar algumas dicas úteis e truques para jogar com vetores, matrizes e arrays usando NumPy biblioteca em Python. Esta lição é um ponto de partida muito bom se você está começando na ciência dos dados e precisa de uma visão matemática introdutória destes componentes e como podemos jogar com eles usando NumPy em código.

NumPy library permite-nos realizar várias operações que precisam ser feitas em estruturas de dados frequentemente usadas na aprendizagem de máquinas e Ciência de dados, como vetores, matrizes e matrizes. Vamos apenas mostrar as operações mais comuns com NumPy que são usadas em um monte de pipelines de aprendizagem de máquinas. Finalmente, por favor, note que NumPy é apenas uma maneira de realizar as operações, então, as operações matemáticas que mostramos são o foco principal desta lição e não o pacote NumPy em si. Vamos começar.

o que é um Vector?

de acordo com o Google, Um vetor é uma quantidade que tem direção, bem como magnitude, especialmente como determinar a posição de um ponto no espaço em relação a outro.

Vectores são muito importantes na aprendizagem das máquinas, uma vez que não só descrevem a magnitude, mas também a direcção das características. We can create a vector in NumPy with following code snippet:

import numpy as np
row_vector = np.array ()
print (row_ Vector)

no excerto de código acima, criamos um vetor de linha. Nós também podemos criar um vetor coluna como:

import numpy as np
col_vector = NP.array (,,])
print(col_vector)

Making a Matrix

a matrix can be simply understanded as a bidimensional array. We can make a matrix with NumPy by making a multi-dimensional array:

matrix = np.array (,,])
print (matrix)

embora a matriz seja exatamente semelhante ao array multidimensional, a estrutura de dados da matriz não é recomendada devido a duas razões.:

  1. A matriz é o padrão quando se trata de o pacote NumPy
  2. a Maioria das operações com NumPy devolve matrizes e não uma matriz

Usando um Sparse Matrix

Para lembrar, um sparse matrix é aquela na qual a maioria dos itens são zero. Agora, um cenário comum no processamento de dados e aprendizagem de máquinas é o processamento de matrizes em que a maioria dos elementos são zero. Por exemplo, considere uma matriz cujas linhas descrevem cada vídeo no Youtube e colunas representam cada usuário registrado. Cada valor representa se o usuário assistiu um vídeo ou não. Claro que a maioria dos valores nesta matriz será zero. A vantagem com a matriz esparsa é que ela não armazena os valores que são zero. Isso resulta em uma enorme vantagem computacional e otimização de armazenamento também.

Vamos criar uma faísca matriz aqui:

Para entender como funciona o código, vamos olhar para a saída aqui:

No código acima, utilizamos uma NumPy da função para criar um Comprimido esparsos linha da matriz, onde o não-zero elementos são representados usando a zero baseados em índices. Existem vários tipos de matriz esparsa, como:

  • coluna esparsa Compactada
  • Lista de lista
  • Dicionário de teclas

não Vamos de mergulho em outras matrizes esparsas aqui, mas sei que cada uma de suas uso é específico e ninguém pode ser denominado como ‘melhor’.

aplicar operações a todos os elementos vetoriais

é um cenário comum quando precisamos aplicar uma operação comum a vários elementos vetoriais. Isso pode ser feito definindo um lambda e, em seguida, vetorizar o mesmo. Vejamos alguns excertos de código para o mesmo:

matrix = NP.array (,
,
])
mul_5 = lambda x: x * 5
vectorized_mul_5 = np.vectorize(mul_5)
vectorized_mul_5(matriz).

Para entender como funciona o código, vamos olhar para a saída aqui:

No trecho de código acima, utilizamos vectorize função, que é parte da biblioteca NumPy, para transformar um simples lambda definição de uma função que pode processar cada elemento do vetor. É importante notar que o vectorize é apenas um loop sobre os elementos e não tem efeito sobre o desempenho do programa. NumPy também permite a radiodifusão, o que significa que, em vez de acima complexo código, poderíamos ter simplesmente feito:

matriz * 5

E o resultado teria sido exatamente o mesmo. Eu queria mostrar a parte complexa primeiro, caso contrário você teria saltado a seção!

média, variância e desvio padrão

com NumPy, é fácil realizar operações relacionadas com estatísticas descritivas de vetores. A média de um vetor pode ser calculada como:

np.a variância média(matriz)

de um vector pode ser calculada como:

np.var (matrix)

desvio padrão de um vetor pode ser calculado como:

np.std(matriz).

A saída dos comandos acima em um determinado matriz é dada aqui:

de Transposição de uma Matriz

a Transposição é uma operação muito comum que você vai ouvir falar sempre que você está cercado por matrizes. A transposição é apenas uma forma de trocar os valores colunares e das linhas de uma matriz. Por favor, note que um vetor não pode ser transposto como um vetor é apenas uma coleção de valores sem que esses valores sejam categorizados em linhas e Colunas. Por favor, note que converter um vetor de linha para um vetor de coluna não está transpondo (baseado nas definições de álgebra linear, que está fora do escopo desta lição).por agora, vamos encontrar a paz apenas transpondo uma matriz. It is very simple to access the transpose of a matrix with NumPy:

matrix.T

o resultado do comando acima na matriz indicada é dado aqui:

a mesma operação pode ser realizada em um vetor de linha para convertê-lo em um vetor de coluna.

achatar uma matriz

podemos converter uma matriz em um array unidimensional se quisermos processar seus elementos de forma linear. Isto pode ser feito com o seguinte excerto de código:

matrix.flatten()

A saída do comando acima no dada matriz é dada aqui:

Note que a achatar a matriz é uma matriz unidimensional, simplesmente linear na moda.

calcular autovalores e Autovectores

Autovectores são muito frequentemente utilizados em pacotes de aprendizagem automática. Então, quando uma função de transformação linear é apresentada como uma matriz, então X, Eigenvetores são os vetores que mudam apenas em escala do vetor, mas não em sua direção. Podemos dizer que:

Xv = yv

Aqui, X é a matriz quadrada e γ contém os Autovalores. Além disso, v contém os autovetores. Com NumPy, é fácil calcular autovalores e Autovectores. Aqui está o excerto de código onde demonstramos o mesmo:

evalues, evectors = np.linalg.eig(matriz).

A saída do comando acima no dada matriz é dada aqui:

Dot Produtos de Vetores

Dot Produtos de Vetores é uma forma de multiplicação de 2 vetores. Ele lhe diz sobre quanto dos vetores estão na mesma direção, em oposição ao produto cruzado que lhe diz o oposto, quão pouco os vetores estão na mesma direção (chamado ortogonal). Podemos calcular o produto Ponto de dois vetores como indicado no excerto de código aqui:

a = np.array ()
b = np.array ()
np.dot (a, b)

a saída do comando acima nas matrizes dadas é dada aqui:

adicionar, subtrair e multiplicar matrizes múltiplas

adicionar e subtrair matrizes múltiplas é uma operação bastante simples em matrizes. Há duas formas de o fazer. Vamos ver o excerto de código para realizar estas operações. Para a finalidade de manter este simples, nós usaremos a mesma matriz duas vezes:

np.add (matrix, matrix)

Next, two matrices can be subtracted as:

np.subtrair(matrix, matrix)

A saída do comando acima no dada matriz é dada aqui:

Conforme o esperado, cada um dos elementos na matriz é adicionado e subtraído com o elemento correspondente. Multiplicar uma matriz é semelhante a encontrar o produto Ponto como fizemos anteriormente:

np.dot (matrix, matrix)

o código acima irá encontrar o valor de multiplicação verdadeiro de duas matrizes, dado como:

matriz * matriz

A saída do comando acima no dada matriz é dada aqui:

Conclusão

nesta lição, nós passamos por uma série de operações matemáticas relacionadas com Vetores, Matrizes e Arrays que são comumente usados em processamento de Dados, estatística descritiva e os dados da ciência. Esta foi uma lição rápida cobrindo apenas as seções mais comuns e mais importantes da grande variedade de conceitos, mas estas operações devem dar uma idéia muito boa sobre o que todas as operações podem ser realizadas ao lidar com essas estruturas de dados.

Por favor, partilhe o seu feedback livremente sobre a lição no Twitter com @linuxhint e @sbmaggarwal (sou eu!).