Starfruit Python Advanced Lecture 8-Array array (1) Matriz de matriz y matriz de matriz

Mi columna del blog CSDN: https://blog.csdn.net/yty_7

Dirección de Github: https://github.com/yot777/

 

Antes de que Python introdujera el módulo numpy, solo podía usar listas unidimensionales como [1,2,3]. Después de la introducción del módulo numpy, se puede expandir a matrices bidimensionales, tridimensionales y n-dimensionales.

Antes de usar una matriz o matriz, debe agregarla a la primera línea del programa Python

importar numpy como np

8.1 Definición de matrices y matrices

matriz: matriz

matriz (puede abreviarse como mat) : matriz

La matriz es una rama de la matriz . La matriz y la matriz son básicamente universales cuando representan dos dimensiones (por ejemplo, ambas se pueden transponer).

Pero en el caso no bidimensional, existen las siguientes diferencias significativas:

La matriz solo puede representar una matriz bidimensional, incluso si la entrada es una lista unidimensional, se forzará en una matriz bidimensional.

La matriz no solo puede representar matrices bidimensionales, sino que también representa dimensiones 1, 3, 4, 5 ... Las matrices bidimensionales también se pueden llamar matrices.

La sugerencia oficial de Python es elegir una matriz cuando se pueden usar ambas , porque la matriz es más flexible y más rápida.


8.2 Expresiones dimensionales de matrices y matrices

Expresiones dimensionales para matrices y matrices (m, n): m es el número de filas, n es el número de columnas

Use la función shape () para obtener el número de filas y columnas de una matriz (o matriz) (m, n)

En particular, la matriz bidimensional (1, n) cuando m = 1 se llama vector fila y la matriz bidimensional (m, 1) cuando n = 1 se llama vector columna . Los vectores de columna pueden referirse simplemente como vectores.

Las matrices y las matrices se pueden definir directamente con la función np.array (), o se pueden convertir de listas.

Tenga en cuenta que los elementos de la lista están separados por comas , pero los elementos de la matriz están separados por espacios .

Las matrices o matrices pueden hacer intercambios de fila y columna, llamadas transposiciones, implementadas con funciones .T o transpose () .

#数组和矩阵转置举例
import numpy as np

p=[[1,2]]
p.append([3,4])
p.append([5,6])
#q是二维数组
q=np.array(p)
print("q=\n",q)
print("q的维度是",np.shape(q))
#s是二维数组q的转置
s=q.T
print("s=\n",s)
print("s的维度是",np.shape(s))
#u是矩阵
u=np.matrix(p)
print("u=\n",u)
print("u的维度是",np.shape(u))
#v是矩阵u的转置
v=u.transpose()
print("v=\n",v)
print("v的维度是",np.shape(v))

运行结果:
q=
 [[1 2]
 [3 4]
 [5 6]]
q的维度是 (3, 2)
s=
 [[1 3 5]
 [2 4 6]]
s的维度是 (2, 3)
u=
 [[1 2]
 [3 4]
 [5 6]]
u的维度是 (3, 2)
v=
 [[1 3 5]
 [2 4 6]]
v的维度是 (2, 3)

¿Cómo juzgar las dimensiones de una matriz? El número de corchetes izquierdos consecutivos (también corchetes derechos) es una matriz de pocas dimensiones .

Por ejemplo: matriz ( [ 1,2,3 ] ) es una matriz unidimensional, matriz ( [[ 1,2], [3,4], [5,6 ]] ) es una matriz bidimensional,

matriz ( [[[ 1,2,3], [4,5,6]], [[7,8,9], [10,11,12]], [[13,14,15], [16 , 17,18 ]]] ) es una matriz tridimensional.

Ejemplos de dimensiones de lista:

#列表维度举例
import numpy as np

a=np.array([1,2,3])
b=np.array([[1,2],[3,4],[5,6]])
c=np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]],[[13,14,15],[16,17,18]]])
print("a=\n",a)
print("a的维度是",np.shape(a))
print("b=\n",b)
print("b的维度是",np.shape(b))
print("c=\n",c)
print("c的维度是",np.shape(c))

运行结果:
a=
 [1 2 3]
a的维度是 (3,)
b=
 [[1 2]
 [3 4]
 [5 6]]
b的维度是 (3, 2)
c=
 [[[ 1  2  3]
  [ 4  5  6]]

 [[ 7  8  9]
  [10 11 12]]

 [[13 14 15]
  [16 17 18]]]
c的维度是 (3, 2, 3)

¿Cómo entender la dimensión (3, 2, 3) de la matriz c? De hecho, son tres (2,3) matrices bidimensionales.

Ejemplos de matrices unidimensionales:

import numpy as np

array1=np.array([1,2,3])
print("array1=\n",array1)
print("array1的维度是",np.shape(array1))

mat1=np.mat([1,2,3])
print("mat1=\n",mat1)
print("mat1的维度是",np.shape(mat1))

运行结果:
array1=
 [1 2 3]
array1的维度是 (3,)
mat1=
 [[1 2 3]]
mat1的维度是 (1, 3)

Se puede ver que la matriz forzó la lista unidimensional en una matriz bidimensional (1, 3).

 

La dimensión de la matriz no puede exceder 2, de lo contrario se informará un error:

#矩阵的维度超过2
import numpy as np

mat5=np.mat([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]],[[13,14,15],[16,17,18]]])
print("mat5=\n",mat5)
print("mat5的维度是",np.shape(mat5))

运行结果:
mat4=
 [[1 2 3]
 [4 5 6]]
mat4的维度是 (2, 3)
Traceback (most recent call last):
  File "test1.py", line 7, in <module>
    mat5=np.mat([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]],[[13,14,15],[16,17,18]]])
  File "C:\Users\yty7\AppData\Roaming\Python\Python36\site-packages\numpy\matrixlib\defmatrix.py", line 71, in asmatrix
    return matrix(data, dtype=dtype, copy=False)
  File "C:\Users\yty7\AppData\Roaming\Python\Python36\site-packages\numpy\matrixlib\defmatrix.py", line 151, in __new__
    raise ValueError("matrix must be 2-dimensional")
ValueError: matrix must be 2-dimensional

Se puede ver que la matriz no admite la matriz tridimensional, por lo que el programa informa un error: la matriz debe ser bidimensional

 

8.3 Multiplicación de matrices y multiplicación de matrices

Para multiplicar dos matrices, use el símbolo * , pero la matriz como multiplicación matricial debe usar el método.dot ()

Si la matriz se multiplica directamente con *, el resultado es el producto de los elementos correspondientes en las dos matrices.

Método de memoria simple de la multiplicación de matrices: matriz de m filas y n columnas, la matriz que se puede multiplicar por ella debe ser n filas, matriz (m, n ) multiplicada por matriz ( n , s) para obtener la nueva matriz es (m, s)

Ejemplos de multiplicación numpy.array y multiplicación dot ():

import numpy as np

array1=np.array([[1,2,3],[4,5,6],[7,8,9]])
array2=np.array([[1],[2],[3]])
print("array1=\n",array1)
print("array2=\n",array2)

#数组相乘
array3 = array1*array2
print("array3=\n",array3)

#数组dot()相乘
array4 = array1.dot(array2)
print("array4=\n",array4)

运行结果:
array1=
 [[1 2 3]
 [4 5 6]
 [7 8 9]]
array2=
 [[1]
 [2]
 [3]]
array3=
 [[ 1  2  3]
 [ 8 10 12]
 [21 24 27]]
array4=
 [[14]
 [32]
 [50]]

Se puede ver que la matriz se usa como método de multiplicación de la matriz. Dot (), si la matriz se multiplica directamente con *, el resultado es el producto de los elementos correspondientes en las dos matrices.

Ejemplo de multiplicación numpy.matrix:

import numpy as np

mat1=np.mat([[1,2,3],[4,5,6],[7,8,9]])
mat2=np.mat([[1],[2],[3]])
print("mat1=\n",mat1)
print("mat2=\n",mat2)

#矩阵相乘
mat3 = mat1*mat2
print("mat3=\n",mat3)

#矩阵dot()相乘
mat4 = mat1.dot(mat2)
print("mat4=\n",mat4)

运行结果:
mat1=
 [[1 2 3]
 [4 5 6]
 [7 8 9]]
mat2=
 [[1]
 [2]
 [3]]
mat3=
 [[14]
 [32]
 [50]]
mat4=
 [[14]
 [32]
 [50]]

De hecho, en la mayoría de los programas de Python, las matrices se usan más comúnmente .

 

Resumen:

La matriz de matriz numpy y la matriz de matriz son similares en dos dimensiones .

La matriz solo puede representar una matriz bidimensional. La matriz no solo puede representar matrices bidimensionales, sino también representar dimensiones 1, 3, 4, 5 ... n.

Expresión de dimensión de matrices y matrices (m, n): m es el número de filas, n es el número de columnas.

En particular, la matriz bidimensional (1, n) cuando m = 1 se llama vector fila y la matriz bidimensional (m, 1) cuando n = 1 se llama vector columna . Los vectores de columna pueden referirse simplemente como vectores.

Para multiplicar dos matrices, use el símbolo * , pero la matriz como multiplicación matricial debe usar el método.dot ()

Si la matriz se multiplica directamente con *, el resultado es el producto de los elementos correspondientes en las dos matrices.

Una matriz de m filas y n columnas. La matriz que se puede multiplicar por ella debe ser n filas. La matriz (m, n ) se multiplica por la matriz ( n , s) para obtener la nueva matriz es (m, s)

 

Mi columna del blog CSDN: https://blog.csdn.net/yty_7

Dirección de Github: https://github.com/yot777/

Si crees que este capítulo es útil para ti, ¡bienvenido a seguir, comentar y dar me gusta! ¡Github le da la bienvenida a Follow and Star!

 

Publicado 55 artículos originales · alabanza ganado 16 · vistas 6111

Supongo que te gusta

Origin blog.csdn.net/yty_7/article/details/104395245
Recomendado
Clasificación