English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial Básico Python

Controle de Fluxo Python

Funções no Python

Tipos de Dados do Python

Operações de Arquivos Python

Objetos e Classes Python

Data e Hora Python

Conhecimentos Avançados Python

Manual de Referência Python

Python matrix and NumPy arrays

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.

Matriz Python

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.

arrays NumPy

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,

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.

Como criar um array NumPy?

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]]

2.vetor de zeros e uns

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

3.usando arange() e shape()

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.

operações de matriz

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.

Adição de matrizes

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]]
 '''

multiplicação de matrizes

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]]
'''

transposta da matriz

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.

Acessar elementos da matriz, linhas e colunas

Acessar elementos da matriz

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

acessar linhas da matriz

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]

acessar colunas da matriz

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.

matrix slicing

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.

NumPy resources that you may find helpful: