1. La diferencia entre array y mat
El paquete numpy en Python es un paquete de computación científica. Este paquete se usará en la mayoría de los casos al realizar cálculos científicos, pero se debe tener en cuenta la diferencia entre la matriz de dos funciones y el tapete. Es probable que el tipo de datos sea una causa difícil de encontrar de un error en el programa (auto-lección)
if __name__ == '__main__':
# 一维
two = [1, 3, 5, 2, 3, 2]
two1 = np.array(two)
print(two) # [1, 3, 5, 2, 3, 2] type:list
print(two1) # [1 3 5 2 3 2] type:tuple
print(two1.shape) # (6,)
print(two1.tolist()) # [1, 3, 5, 2, 3, 2] type:list
print(len(two1.tolist())) # 6
two2 = np.mat(two)
print(two2) # [[1 3 5 2 3 2]] type:tuple
print(two2.shape) # (1, 6)
print(two2.tolist()) # [[1, 3, 5, 2, 3, 2]] type:list
print(len(two2.tolist())) # 1
Puede ver que la matriz y el tapete siguen siendo diferentes.
- matriz: convierte directamente la lista en una matriz, que incluye pero no se limita a una lista unidimensional
- mat: convierte los datos de la lista en una matriz
Entonces, después de usar el comando tolist
para convertir la matriz, se puede convertir al aspecto original, y el tipo de tapete será diferente del original.
La diferencia aquí es obvia en el caso unidimensional. No hay diferencia para la siguiente situación de latitudes múltiples.
Para listas multidimensionales, básicamente no hay diferencia entre matriz y mat: pero hay una diferencia en la operación *
# 多维数组
two = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16], [17, 18, 19, 20]]
two1 = np.array(two)
print(two)
'''
[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16], [17, 18, 19, 20]]
'''
print(two1)
'''
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]
[13 14 15 16]
[17 18 19 20]]
'''
print(two1.shape) # (5, 4)
print(two1.tolist())
'''
[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16], [17, 18, 19, 20]]
'''
print(len(two1.tolist())) # 5
two2 = np.mat(two)
print(two2)
'''
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]
[13 14 15 16]
[17 18 19 20]]
'''
print(two2.shape) # (5, 4)
print(two2.tolist())
'''
[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16], [17, 18, 19, 20]]
'''
print(len(two2.tolist())) # 5
two3=two1.T # 数组转置
two4=two2.T # 矩阵转置
Y=two1 * two1 # 数组相乘:各元素对应相乘
'''
[[ 1 4 9 16]
[ 25 36 49 64]
[ 81 100 121 144]
[169 196 225 256]
[289 324 361 400]]
'''
#Y1 = np.dot(two1, two1) # dot()函数是矩阵乘,而*则表示逐个元素相乘; 5x4 和 5x4 矩阵乘报错
Y1 = np.dot(two1, two1.T) # 可以将two1其转置 然后矩阵乘
'''
[[ 30 70 110 150 190]
[ 70 174 278 382 486]
[ 110 278 446 614 782]
[ 150 382 614 846 1078]
[ 190 486 782 1078 1374]]
'''
Y4 = two2 * two2.T # 矩阵相乘:等同于 p.dot(two2, two2.T)
'''
[[ 30 70 110 150 190]
[ 70 174 278 382 486]
[ 110 278 446 614 782]
[ 150 382 614 846 1078]
[ 190 486 782 1078 1374]]
'''
Resumen: la diferencia entre matriz (matriz) y mat (matriz) en numpy
La matriz es una rama de la matriz, la matriz y la matriz son comunes en muchos casos, lo que sea que use es el mismo. Pero en este momento, el funcionario sugirió que si ambos son universales, entonces elija matriz, porque la matriz es más flexible y más rápida, muchas personas también traducen la matriz bidimensional en una matriz.
Pero la ventaja de la matriz es el símbolo de operación relativamente simple. Por ejemplo, la multiplicación de dos matrices usa el símbolo *, pero la multiplicación de la matriz no se puede usar de esta manera
. La ventaja de array.dot () La ventaja de la matriz no es solo representar dos dimensiones, sino también Representa 3, 4, 5 ... dimensiones, y en la mayoría de los programas de Python, la matriz también se usa más comúnmente.
Uso del método de puntos
Blog de referencia: https://www.cnblogs.com/Shawnyi/p/10370815.html
matriz (matriz) y mat (matriz)
X [:, 0] es tomar los elementos de la columna 0 de todas las filas de la matriz X, y X [:, 1] es tomar los elementos de la columna 1 de todas las filas.
X [:, m: n] toma los datos de las columnas m a n-1 en todas las filas de la matriz X, incluidas la izquierda pero no la derecha.
X [0,:] es tomar todos los elementos de la fila 0 de la matriz X, X [1,:] es tomar todos los elementos de la fila 1 de la matriz X
print(two1[0,:])
'''
[1 2 3 4]
'''
print(two2[:,0])
'''
[[ 1]
[ 5]
[ 9]
[13]
[17]]
'''