English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Neste artigo, vamos aprender a usar listas aninhadas e o pacote NumPy para matrizes Python.
Uma matriz é uma estrutura de dados bidimensional onde os números estão dispostos por linhas e colunas. Por exemplo:
Essa matriz é3x4matriz de (“três por quatro”) porque ela tem3linhas4colunas.
Python não tem um tipo integrado de matriz. Mas, podemos ver listas de listas como matrizes. Por exemplo:
A = [[1, 4, 5], [-5, 8, 9]]
Podemos ver essa lista de listas como tendo2linhas3matrizes de colunas.
Antes de continuar este artigo, certifique-se de entenderListas Python。
Vamos ver como usar listas aninhadas.
A = [[1, 4, 5, 12], [-5, 8, 9, 0], [-6, 7, 11, 19]] print("A =", A) print("A[1]]", A[1]) # segunda linha print("A[1]]2]]", A[1]]2]) # terceiro elemento da segunda linha print("A[0][-1] = ", A[0][-1]) # último elemento da primeira linha column = []; # lista vazia for row in A: column.append(row[2]) print("3rd_column =", column)
When we run the program, the output will be:
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 3rd_column = [5, 9, 11]
Aqui estão alguns exemplos relacionados a matrizes Python usando listas aninhadas.
Usar listas aninhadas como matrizes pode ser útil para tarefas de cálculo simples, mas usarNumPyo pacote é uma maneira melhor de manipular matrizes no Python.
O NumPy é um pacote de software para cálculos científicos que suporta objetos de arrays N-dimensionais poderosos. Antes de usar o NumPy, você precisa instalá-lo. Para mais informações,
Acesse:Como instalar o NumPy?
Se você usar Windows, baixe e instale o Pythonedição Anaconda. Ele vem com o NumPy e outros pacotes relacionados à ciência de dados e aprendizado de máquina.
Depois de instalar o NumPy, você pode importá-lo e usá-lo.
O NumPy fornece arrays multidimensionais de números (na verdade um objeto). Vamos dar um exemplo:
import numpy as np a = np.array([1, 2, 3]) print(a) # Saída: [1, 2, 3] print(type(a)) # Saída: <class 'numpy.ndarray'>
Como você vê, a classe de array NumPy é chamada ndarray.
Existem várias maneiras de criar arrays NumPy.
1.arrays de inteiros, pontos 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 de pontos flutuantes print(A) A = np.array([1, 2, 3], [3, 4, 5], dtype = complex) # array de números complexos print(A)
Quando você executar 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]]
import numpy as np zeors_array = np.zeros((2, 3) ) print(zeors_array) ''' Saída: [[0. 0. 0.] [0. 0. 0.]] ''' ones_array = np.ones((1, 5), dtype=np.int32 ) // dtype print(ones_array) # Saída: [[1 1 1 1 1]]
Aqui, especificamos o dtype32bits (4bytes). Portanto, o array pode usar valores de até-2-312-31-1
import numpy as np A = np.arange(4) print('A =', A) B = np.arange(12).reshape(2, 6) print('B =', B) ''' Saída: A = [0 1 2 3] B = [[ 0 1 2 3 4 5] [ 6 7 8 9 10 11]] '''
Conheça sobreCriar um array NumPymais informações sobre outros métodos.
Acima, fornecemos3um exemplo: adição de duas matrizes, multiplicação de duas matrizes e transposta de uma matriz. Antes de escrever esses programas, usamos listas aninhadas. Vamos ver como podemos usar arrays NumPy para completar a mesma tarefa.
Usamos+O operador adiciona 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 # Adição inteligente de elementos print(C) ''' Saída: [[11 1] [ 8 0]] '''
Para multiplicar duas matrizes, usamos o método dot(). Saiba mais sobrenumpy.dotMais informações sobre como funciona.
Atenção: *usada para multiplicação de arrays (multiplicação dos elementos correspondentes de dois arrays), não 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) ''' Saída: [[ 36 -12] [ -1 2]] '''
Usamosnumpy.transposeCalcular a transposta da matriz.
import numpy as np A = np.array([1, 1], [2, 1], [3, -3]] print(A.transpose()) ''' Saída: [[ 1 2 3] [ 1 1 -3]] '''
Como você vê, o NumPy facilita nossa tarefa.
Como em uma lista, podemos usar índices para acessar elementos da matriz. Vamos começar com um array unidimensional NumPy.
import numpy as np A = np.array([2, 4, 6, 8, 10]) print("A[0] =", A[0]) # Primeiro elemento print("A[2]]", A[2]] # Terceiro elemento print("A[-1]]", A[-1]] # Último elemento
Quando você executar o programa, a saída será:
A[0] = 2 A[2]] 6 A[-1]] 10
Agora, vamos ver como acessar elementos de um array bidimensional (basicamente uma matriz).
import numpy as np A = np.array([1, 4, 5, 12], [-5, 8, 9, 0], [-6, 7, 11, 19]] ]] # Primeiro elemento da primeira linha print("A[0][0] =", A[0][0]) ]] # Terceiro elemento da segunda linha print("A[1]]2]]", A[1]]2]) ]] # Último elemento da última linha 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
import numpy as np A = np.array([1, 4, 5, 12], [-5, 8, 9, 0], [-6, 7, 11, 19]] print("A[0] =", A[0]) # Primeira Linha print("A[2]]", A[2]] # Terceira Linha print("A[-1]]", A[-1]] # Última Linha (3rd linha, neste caso)
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]
import numpy as np A = np.array([1, 4, 5, 12], [-5, 8, 9, 0], [-6, 7, 11, 19]] print("A[:,0] =", A[:,0]) # Primeira Coluna print("A[:,3]]", A[:,3]] # Quarto Coluna 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 do not understand how the above code works, please read the slicing section of this article on matrices.
One-dimensional NumPy array slicing is similar to lists. If you are not familiar with list slicing, please visitUnderstand Python slicing symbols。
Let's take an example:
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]
Now, let's see how to slice matrices.
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 fifth columns '''Output: [[ 5 12 14] [ 9 0 17] [11 19 21]] '''
As you can see, using NumPy (instead of nested lists) makes it easier to handle matrices, and we haven't even touched the basics. We recommend that you study the NumPy package in detail, especially when you try to use Python for data science/when analyzing.