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

Python 基础教程

Python 流程控制

Fonction en Python

Types de données en Python

Python 文件操作

Python 对象和类

Python 日期和时间

Python 高级知识

Python 参考手册

Python matrices and NumPy arrays

在本文中,我们将学习使用嵌套列表和NumPy包的Python矩阵。

矩阵是一种二维数据结构,其中数字按行和列排列。例如:

此矩阵是3x4(“三乘四”)矩阵,因为它具有3行4列。

Python矩阵

Python没有矩阵的内置类型。但是,我们可以将列表的列表视为矩阵。例如:

A = [[1, 4, 5], 
    [-5, 8, 9]]

我们可以将此列表的列表视为具有2行3列的矩阵。

在继续本文之前,请务必了解Python列表

让我们看看如何使用嵌套列表。

A = [[1, 4, 5, 12], 
    [-5, 8, 9, 0],
    [-6, 7, 11, 19]]
print("A =", A) 
print("A[1], =", A[1]) # 第二行
print("A[1][2], =", A[1][2]) # 第二行的第三元素
print("A[0][-1] =", A[0][-1]) # 第一行的最后一个元素
column = []; # 空list
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]

Voici quelques exemples de matrices Python liés à l'utilisation de listes imbriquées.

L'utilisation de listes imbriquées en tant que matrices peut être utilisée pour des tâches de calcul simples, mais l'utilisationNumPyLe paquet est une meilleure méthode pour traiter des matrices en Python.

Tableau NumPy

NumPy est un paquet de calcul scientifique qui prend en charge des objets de tableaux N dimensions puissants. Avant d'utiliser NumPy, vous devez d'abord l'installer. Pour plus d'informations,

  • Accédez à :Comment installer NumPy ?

  • Si vous utilisez Windows, téléchargez et installez Python.Édition Anaconda. Il contient NumPy ainsi que d'autres paquets liés à la science des données et à l'apprentissage automatique.

Une fois NumPy installé, vous pouvez l'importer et l'utiliser.

NumPy fournit des tableaux multidimensionnels de nombres (en réalité, un objet). Laissons un exemple :

import numpy as np
a = np.array([1, 2, 3])
print(a) # Sortie: [1, 2, 3]
print(type(a)) # Sortie: <class 'numpy.ndarray'>

Comme vous le voyez, la classe de tableau NumPy s'appelle ndarray.

Comment créer un tableau NumPy ?

Il existe plusieurs méthodes pour créer des tableaux NumPy.

1. Tableau d'entiers, de flottants et de nombres complexes

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]) # Tableau de flottants
print(A)
A = np.array([1, 2, 3], [3, 4, 5], dtype = complex) # Tableau de nombres complexes
print(A)

Lors de l'exécution de ce programme, la sortie est :

[[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. tableau d'uns et de zéros

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

Ici, nous spécifions dtype32bits (4octets). Par conséquent, cet tableau peut prendre des valeurs de à .-2-312-31-1

3. en utilisant arange() et shape()

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

En savoir plus surCréer un tableau NumPyd'autres méthodes.

Informations sur les opérations matricielles

Ci-dessus, nous vous avons fourni3Un exemple : addition de deux matrices, multiplication de deux matrices et transposition d'une matrice. Avant d'écrire ces programmes, nous avons utilisé des listes imbriquées. Voyons comment nous pouvons accomplir la même tâche avec des tableaux NumPy.

Addition de deux matrices

Nous utilisons+L'opérateur additionne les éléments correspondants de deux matrices NumPy.

import numpy as np
A = np.array([2, 4], [5, -6]]
B = np.array([9, -3], [3, 6]]
C = A + B # Addition intelligente des éléments
print(C)
''' 
Sortie :
[[11  1]
 [ 8  0]]
 '''

la multiplication de deux matrices

Pour multiplier deux matrices, nous utilisons la méthode dot(). Pour en savoir plus surnumpy.dotPour plus d'informations sur le fonctionnement.

Attention : *Pour la multiplication d'arrays (le produit des éléments correspondants de deux arrays), et non la multiplication de matrices.

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)
''' 
Sortie :
[[ 36 -12]
 [ -1   2]]
'''

transposition de la matrice

Nous utilisonsnumpy.transposeCalculer la transposition de la matrice.

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

Comme vous le voyez, NumPy rend notre tâche plus facile.

Accès aux éléments de la matrice, lignes et colonnes

Accès aux éléments de la matrice

Comme pour une liste, nous pouvons utiliser des indices pour accéder aux éléments de la matrice. Commençons par un tableau NumPy unidimensionnel.

import numpy as np
A = np.array([2, 4, 6, 8, 10])
print("A[0] =", A[0]) # Premier élément     
print("A[2], =", A[2]) # Troisième élément 
print("A[-1], =", A[-1]) # Dernier élément

Lors de l'exécution de ce programme, la sortie est :

A[0] = 2
A[2]= 6
A[-1]= 10

Maintenant, voyons comment accéder aux éléments d'un tableau à deux dimensions (basiquement une matrice).

import numpy as np
A = np.array([1, 4, 5, 12],
    [-5, 8, 9, 0],
    [-6, 7, 11, 19]]
# Premier élément de la première ligne
print("A[0][0] =", A[0][0])  
# Troisième élément de la deuxième ligne
print("A[1][2], =", A[1][2])
# Dernier élément de la dernière ligne
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

Accès aux lignes de la matrice

import numpy as np
A = np.array([1, 4, 5, 12], 
    [-5, 8, 9, 0],
    [-6, 7, 11, 19]]
print("A[0] =", A[0]) # Première Ligne
print("A[2], =", A[2]) # Troisième Ligne
print("A[-1], =", A[-1]) # Dernière Ligne (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]

Accès aux colonnes de la matrice

import numpy as np
A = np.array([1, 4, 5, 12], 
    [-5, 8, 9, 0],
    [-6, 7, 11, 19]]
print("A[:,0] =", A[:,0]) # Premier Colonne
print("A[:,3], A[:,3]) # Quatrième Colonne
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 the above code works, please read the slicing part of this article on matrices.

matrix slicing

One-dimensional NumPy array slicing is similar to lists. If you don't know how list slicing works, 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]
# 1start to 4th elements
print(letters[:-5])        #Output: [1, 3]   
# 6th to last elements
print(letters[5:])          #Output:[7, 5]
# 1start 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) can make it easier to handle matrices, and we haven't even touched on 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, you may find helpful: