Python Matrix e Introducción a NumPy

En este artículo, aprenderemos sobre las matrices de Python usando listas anidadas y el paquete NumPy.

Una matriz es una estructura de datos bidimensional donde los números se organizan en filas y columnas. Por ejemplo:

Esta matriz es una matriz de 3x4 (pronunciada "tres por cuatro") porque tiene 3 filas y 4 columnas.

Matriz de Python

Python no tiene un tipo integrado para matrices. Sin embargo, podemos tratar la lista de una lista como una matriz. Por ejemplo:

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

Podemos tratar esta lista de una lista como una matriz que tiene 2 filas y 3 columnas.

Asegúrese de conocer las listas de Python antes de continuar con este artículo.

Veamos cómo trabajar con una lista anidada.

 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) 

Cuando ejecutamos el programa, la salida 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 3a columna = (5, 9, 11) 

Aquí hay algunos ejemplos más relacionados con matrices de Python usando listas anidadas.

  • Suma dos matrices
  • Transponer una matriz
  • Multiplica dos matrices

El uso de listas anidadas como matriz funciona para tareas computacionales simples, sin embargo, existe una mejor manera de trabajar con matrices en Python usando el paquete NumPy.

Matriz NumPy

NumPy es un paquete para computación científica que tiene soporte para un poderoso objeto de matriz N-dimensional. Antes de poder usar NumPy, debe instalarlo. Para más información,

  • Visita: ¿Cómo instalar NumPy?
  • Si está en Windows, descargue e instale la distribución anaconda de Python. Viene con NumPy y otros paquetes relacionados con la ciencia de datos y el aprendizaje automático.

Una vez que NumPy está instalado, puede importarlo y usarlo.

NumPy proporciona una matriz multidimensional de números (que en realidad es un objeto). Tomemos un ejemplo:

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

Como puede ver, se llama a la clase de matriz de NumPy ndarray.

¿Cómo crear una matriz NumPy?

Hay varias formas de crear matrices NumPy.

1. Matriz de números enteros, flotantes y 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))) # Array of floats print(A) A = np.array(((1, 2, 3), (3, 4, 5)), dtype = complex) # Array of complex numbers print(A) 

Cuando ejecute 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)) 

2. Matriz de ceros y unos

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

Aquí, hemos especificado dtypea 32 bits (4 bytes). Por lo tanto, esta matriz puede tomar valores de a .-2-312-31-1

3. Usar arange () y shape ()

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

Obtenga más información sobre otras formas de crear una matriz NumPy.

Operaciones de matriz

Arriba, le dimos 3 ejemplos: suma de dos matrices, multiplicación de dos matrices y transposición de una matriz. Usamos listas anidadas antes para escribir esos programas. Veamos cómo podemos hacer la misma tarea usando la matriz NumPy.

Adición de dos matrices

Usamos el +operador para agregar 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 # element wise addition print(C) ''' Output: ((11 1) ( 8 0)) '''

Multiplicación de dos matrices

Para multiplicar dos matrices, usamos el dot()método. Obtenga más información sobre cómo funciona numpy.dot.

Nota: * se utiliza para la multiplicación de matrices (multiplicación de los elementos correspondientes de dos matrices), no para la multiplicación 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) ''' Output: (( 36 -12) ( -1 2)) ''' 

Transposición de una matriz

Usamos numpy.transpose para calcular la transposición de una 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 puede ver, NumPy facilitó mucho nuestra tarea.

Acceda a elementos, filas y columnas de la matriz

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.

Tomemos un ejemplo:

 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) 

Ahora, veamos cómo podemos cortar una 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 puede ver, usar NumPy (en lugar de listas anidadas) hace que sea mucho más fácil trabajar con matrices, y ni siquiera hemos arañado lo básico. Le sugerimos que explore el paquete NumPy en detalle, especialmente si intenta usar Python para ciencia / análisis de datos.

Recursos de NumPy que pueden resultarle útiles:

  • Tutorial de NumPy
  • Referencia de NumPy

Articulos interesantes...