Matriz Python e introdução ao NumPy

Neste artigo, aprenderemos sobre matrizes Python usando listas aninhadas e o pacote NumPy.

Uma matriz é uma estrutura de dados bidimensional em que os números são organizados em linhas e colunas. Por exemplo:

Esta matriz é uma matriz 3x4 (pronuncia-se "três por quatro") porque tem 3 linhas e 4 colunas.

Matriz Python

Python não tem um tipo embutido para matrizes. No entanto, podemos tratar a lista de uma lista como uma matriz. Por exemplo:

 A = ((1, 4, 5), (-5, 8, 9)) 

Podemos tratar esta lista de lista como uma matriz com 2 linhas e 3 colunas.

Certifique-se de aprender sobre as listas Python antes de prosseguir com este artigo.

Vamos ver como trabalhar com uma lista aninhada.

 A = ((1, 4, 5, 12), (-5, 8, 9, 0), (-6, 7, 11, 19)) print("A =", A) print("A(1) =", A(1)) # 2nd row print("A(1)(2) =", A(1)(2)) # 3rd element of 2nd row print("A(0)(-1) =", A(0)(-1)) # Last element of 1st Row column = (); # empty list for row in A: column.append(row(2)) print("3rd column =", column) 

Quando executamos o programa, a saída será:

 A = ((1, 4, 5, 12), (-5, 8, 9, 0), (-6, 7, 11, 19)) A (1) = (-5, 8, 9, 0) A (1) (2) = 9 A (0) (- 1) = 12 3ª coluna = (5, 9, 11) 

Aqui estão mais alguns exemplos relacionados a matrizes Python usando listas aninhadas.

  • Adicione duas matrizes
  • Transpor uma matriz
  • Multiplique duas matrizes

Usar listas aninhadas como uma matriz funciona para tarefas computacionais simples, no entanto, há uma maneira melhor de trabalhar com matrizes em Python usando o pacote NumPy.

Matriz NumPy

NumPy é um pacote para computação científica que tem suporte para um poderoso objeto de matriz N-dimensional. Antes de usar o NumPy, você precisa instalá-lo. Para mais informações,

  • Visite: Como instalar o NumPy?
  • Se você estiver no Windows, baixe e instale a distribuição anaconda do Python. Ele vem com o NumPy e vários outros pacotes relacionados à ciência de dados e aprendizado de máquina.

Depois que o NumPy estiver instalado, você pode importá-lo e usá-lo.

NumPy fornece uma matriz multidimensional de números (que na verdade é um objeto). Vamos dar um exemplo:

 import numpy as np a = np.array((1, 2, 3)) print(a) # Output: (1, 2, 3) print(type(a)) # Output: 

Como você pode ver, a classe de array do NumPy é chamada ndarray.

Como criar uma matriz NumPy?

Existem várias maneiras de criar matrizes NumPy.

1. Matriz de inteiros, flutuantes e números complexos

 import numpy as np A = np.array(((1, 2, 3), (3, 4, 5))) print(A) A = np.array(((1.1, 2, 3), (3, 4, 5))) # Array of floats print(A) A = np.array(((1, 2, 3), (3, 4, 5)), dtype = complex) # Array of complex numbers print(A) 

Quando você executa o programa, a saída será:

 ((1 2 3) (3 4 5)) ((1,1 2. 3.) (3. 4. 5.)) ((1. + 0.j 2. + 0.j 3. + 0.j) (3. + 0.j 4. + 0.j 5. + 0.j)) 

2. Matriz de zeros e uns

 import numpy as np zeors_array = np.zeros( (2, 3) ) print(zeors_array) ''' Output: ((0. 0. 0.) (0. 0. 0.)) ''' ones_array = np.ones( (1, 5), dtype=np.int32 ) // specifying dtype print(ones_array) # Output: ((1 1 1 1 1)) 

Aqui, especificamos dtypepara 32 bits (4 bytes). Portanto, essa matriz pode assumir valores de a .-2-312-31-1

3. Usando arange () e forma ()

 import numpy as np A = np.arange(4) print('A =', A) B = np.arange(12).reshape(2, 6) print('B =', B) ''' Output: A = (0 1 2 3) B = (( 0 1 2 3 4 5) ( 6 7 8 9 10 11)) ''' 

Saiba mais sobre outras maneiras de criar uma matriz NumPy.

Operações matriciais

Acima, demos a você 3 exemplos: adição de duas matrizes, multiplicação de duas matrizes e transposição de uma matriz. Usamos listas aninhadas antes para escrever esses programas. Vamos ver como podemos fazer a mesma tarefa usando o array NumPy.

Adição de duas matrizes

Usamos +operador para adicionar elementos correspondentes de duas matrizes NumPy.

 import numpy as np A = np.array(((2, 4), (5, -6))) B = np.array(((9, -3), (3, 6))) C = A + B # element wise addition print(C) ''' Output: ((11 1) ( 8 0)) '''

Multiplicação de duas matrizes

Para multiplicar duas matrizes, usamos o dot()método. Saiba mais sobre como funciona o numpy.dot.

Nota: * é usado para multiplicação de matrizes (multiplicação de elementos correspondentes de duas matrizes) e não para multiplicação de matrizes.

 import numpy as np A = np.array(((3, 6, 7), (5, -3, 0))) B = np.array(((1, 1), (2, 1), (3, -3))) C = A.dot(B) print(C) ''' Output: (( 36 -12) ( -1 2)) ''' 

Transpor de uma matriz

Usamos numpy.transpose para calcular a transposição de uma matriz.

 import numpy as np A = np.array(((1, 1), (2, 1), (3, -3))) print(A.transpose()) ''' Output: (( 1 2 3) ( 1 1 -3)) ''' 

Como você pode ver, o NumPy tornou nossa tarefa muito mais fácil.

Elementos, linhas e colunas da matriz de acesso

Access matrix elements

Similar like lists, we can access matrix elements using index. Let's start with a one-dimensional NumPy array.

 import numpy as np A = np.array((2, 4, 6, 8, 10)) print("A(0) =", A(0)) # First element print("A(2) =", A(2)) # Third element print("A(-1) =", A(-1)) # Last element 

When you run the program, the output will be:

 A(0) = 2 A(2) = 6 A(-1) = 10 

Now, let's see how we can access elements of a two-dimensional array (which is basically a matrix).

 import numpy as np A = np.array(((1, 4, 5, 12), (-5, 8, 9, 0), (-6, 7, 11, 19))) # First element of first row print("A(0)(0) =", A(0)(0)) # Third element of second row print("A(1)(2) =", A(1)(2)) # Last element of last row print("A(-1)(-1) =", A(-1)(-1)) 

When we run the program, the output will be:

 A(0)(0) = 1 A(1)(2) = 9 A(-1)(-1) = 19 

Access rows of a Matrix

 import numpy as np A = np.array(((1, 4, 5, 12), (-5, 8, 9, 0), (-6, 7, 11, 19))) print("A(0) =", A(0)) # First Row print("A(2) =", A(2)) # Third Row print("A(-1) =", A(-1)) # Last Row (3rd row in this case)

When we run the program, the output will be:

 A(0) = (1, 4, 5, 12) A(2) = (-6, 7, 11, 19) A(-1) = (-6, 7, 11, 19) 

Access columns of a Matrix

 import numpy as np A = np.array(((1, 4, 5, 12), (-5, 8, 9, 0), (-6, 7, 11, 19))) print("A(:,0) =",A(:,0)) # First Column print("A(:,3) =", A(:,3)) # Fourth Column print("A(:,-1) =", A(:,-1)) # Last Column (4th column in this case) 

When we run the program, the output will be:

 A(:,0) = ( 1 -5 -6) A(:,3) = (12 0 19) A(:,-1) = (12 0 19) 

If you don't know how this above code works, read slicing of a matrix section of this article.

Slicing of a Matrix

Slicing of a one-dimensional NumPy array is similar to a list. If you don't know how slicing for a list works, visit Understanding Python's slice notation.

Vamos dar um exemplo:

 import numpy as np letters = np.array((1, 3, 5, 7, 9, 7, 5)) # 3rd to 5th elements print(letters(2:5)) # Output: (5, 7, 9) # 1st to 4th elements print(letters(:-5)) # Output: (1, 3) # 6th to last elements print(letters(5:)) # Output:(7, 5) # 1st to last elements print(letters(:)) # Output:(1, 3, 5, 7, 9, 7, 5) # reversing a list print(letters(::-1)) # Output:(5, 7, 9, 7, 5, 3, 1) 

Agora, vamos ver como podemos fatiar uma matriz.

 import numpy as np A = np.array(((1, 4, 5, 12, 14), (-5, 8, 9, 0, 17), (-6, 7, 11, 19, 21))) print(A(:2, :4)) # two rows, four columns ''' Output: (( 1 4 5 12) (-5 8 9 0)) ''' print(A(:1,)) # first row, all columns ''' Output: (( 1 4 5 12 14)) ''' print(A(:,2)) # all rows, second column ''' Output: ( 5 9 11) ''' print(A(:, 2:5)) # all rows, third to the fifth column '''Output: (( 5 12 14) ( 9 0 17) (11 19 21)) ''' 

Como você pode ver, o uso de NumPy (em vez de listas aninhadas) torna muito mais fácil trabalhar com matrizes, e ainda não riscamos o básico. Sugerimos que você explore o pacote NumPy em detalhes, especialmente se estiver tentando usar Python para ciência / análise de dados.

Recursos do NumPy que você pode achar úteis:

  • Tutorial NumPy
  • Referência NumPy

Artigos interessantes...