English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En este artículo, aprenderemos a usar listas anidadas y el paquete NumPy para matrices en Python.
Una matriz es una estructura de datos bidimensional donde los números se organizan en filas y columnas. Por ejemplo:
Esta matriz es3x4matriz de ("tres por cuatro") porque tiene3filas4columnas.
Python no tiene un tipo de matriz integrado. Sin embargo, podemos ver las listas de listas como matrices. Por ejemplo:
A = [[1, 4, 5], [-5, 8, 9]]
Podemos ver esta lista de listas como una estructura con2filas3matrices de columnas.
Antes de continuar con este artículo, asegúrate de entenderListas de Python。
Vamos a ver cómo usar listas anidadas.
A = [[1, 4, 5, 12], [-5, 8, 9, 0], [-6, 7, 11, 19]] print("A =", A) print("A[1]=", A[1]) # segunda fila print("A[1][2]=", A[1][2]) # tercer elemento de la segunda fila print("A[0][-1] =", A[0][-1]) # último elemento de la última fila column = []; # vacío lista 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]
A continuación se presentan algunos ejemplos relacionados con matrices de Python usando listas anidadas.
El uso de listas anidadas como matrices se puede usar para tareas de cálculo simples, pero el usoNumPyEl paquete es una mejor manera de manejar matrices en Python.
NumPy es un paquete de software para cálculos científicos que admite objetos de arreglos N dimensionales poderosos. Antes de usar NumPy, debe instalarlo. Para más información,
Visite:¿Cómo instalar NumPy?
Si usa Windows, descargue e instale Pythonedición Anaconda.Viene con NumPy y otros paquetes relacionados con la ciencia de datos y el aprendizaje automático.
Una vez instalado NumPy, puede importarlo y usarlo.
NumPy proporciona arreglos multidimensionales de números (que en realidad es un objeto). Vamos a dar un ejemplo:
import numpy as np a = np.array([1, 2, 3]) print(a) # Salida: [1, 2, 3] print(type(a)) # Salida: <class 'numpy.ndarray'>
Como puede ver, la clase de array de NumPy se llama ndarray.
Hay varias formas de crear arreglos NumPy.
1.arreglos de enteros, flotantes y números complejos
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]) # Arreglo de flotantes print(A) A = np.array([1, 2, 3], [3, 4, 5], dtype = complex) # Arreglo de números complejos print(A)
Al ejecutar el programa, la salida 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) ''' Salida: [[0. 0. 0.] [0. 0. 0.]] ''' ones_array = np.ones( (1, 5), dtype=np.int32 ) // dtype print(ones_array) # Salida: [[1 1 1 1 1]]
Aquí, especificamos dtype32bits (4bytes). Por lo tanto, el array puede tomar valores desde a-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) ''' Salida: A = [0 1 2 3] B = [[ 0 1 2 3 4 5] [ 6 7 8 9 10 11]] '''
Conocer sobreCrear un array NumPyde otros métodos.
En la parte superior, le ofrecimos3Un ejemplo: suma de dos matrices, multiplicación de dos matrices y transpuesta de una matriz. Antes de escribir estos programas, usamos listas anidadas. Veamos cómo podemos completar la misma tarea usando arrays NumPy.
Usamos+el operador suma los elementos correspondientes de dos matrices NumPy.
import numpy as np A = np.array([2, 4], [5, -6]) B = np.array([[[9, -3], [3, 6]) C = A + B # Adición inteligente de elementos print(C) ''' Salida: [[11 1] [ 8 0]] '''
Para multiplicar dos matrices, usamos el método dot(). Más información sobrenumpy.dotmás información sobre cómo funciona.
Nota: *para la multiplicación de matrices (multiplicación de elementos correspondientes de dos matrices), no para la multiplicación matricial.
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) ''' Salida: [[ 36 -12] [ -1 2]] '''
Usamosnumpy.transposeCalcular la transpuesta de la matriz.
import numpy as np A = np.array([1, 1], [2, 1], [3, -3]) print(A.transpose()) ''' Salida: [[ 1 2 3] [ 1 1 -3]] '''
Como puedes ver, NumPy hace que nuestra tarea sea más sencilla.
Acceder a los elementos de la matriz
Al igual que con una lista, podemos usar índices para acceder a los elementos de la matriz. Comencemos con un array unidimensional de NumPy.
import numpy as np A = np.array([2, 4, 6, 8, 10]) print("A[0] =", A[0]) # Primer elemento print("A[2]=", A[2]) # Tercer elemento print("A[-1]=", A[-1]) # Último elemento
Al ejecutar el programa, la salida será:
A[0] = 2 A[2]= 6 A[-1]= 10
Ahora, veamos cómo acceder a los elementos de un array bidimensional (básicamente una matriz).
import numpy as np A = np.array([1, 4, 5, 12], [-5, 8, 9, 0], [-6, 7, 11, 19]) # Primer elemento de la primera fila print("A[0][0] =", A[0][0]) # Tercer elemento de la segunda fila print("A[1][2]=", A[1][2]) # Último elemento de la última fila 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
acceder a las filas de la 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]) # Primera Fila print("A[2]=", A[2]) # Tercera Fila print("A[-1]=", A[-1]) # Última Fila (3rd row en este 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]
acceder a las columnas de la 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]) # Primera Columna print("A[:,3]=", A[:,3]) # Cuarto Columna 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.
The slicing of one-dimensional NumPy arrays 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] # 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 yet. We recommend that you study the NumPy package in detail, especially when you try to use Python for data science/when analyzing.