1. Introducción de Da Hang:
Asegúrese de declarar el tipo de variable de las variables almacenadas en la matriz al generar la matriz; de lo contrario, realmente, ¡este error no se encontrará durante unos días! ¡Está demasiado escondido!
El sitio web oficial te ha insinuado en silencio:
En general, es causado por la falta de conocimientos básicos sólidos. Una cosa que se pasa por alto es:
La lista en Python es el tipo de datos incorporado de Python. Las clases de datos en la lista no necesitan ser las mismas , y los tipos en la matriz deben ser todos iguales . El tipo de datos en la lista guarda la dirección donde se almacenan los datos , que es simplemente un puntero, no datos, por lo que es demasiado problemático guardar una lista, por ejemplo list1 = [1,2,3, ' a ' ] requiere 4 Puntero y cuatro datos, aumentan el almacenamiento y consumen CPU.
2. Código Da Hang:
>>> a = [0,3,2 ] >>> b = [0,8,2 ] >>> c = np.array (lista (zip (a, b))) >>> c = np. media ([[0,0], [1,1 ]]) >>> c 0.5 >>> c = np.mean ([[0,0], [1,1]], eje = 0) >> > c array ([ 0,5, 0,5 ]) # ver este pequeño compañero, no hay problema ah? ¿Qué está pasando, hermanito! # Veamos más de cerca >>> c = np.array (list (zip (a, b))) >>> c [0] = np.mean ([[0,0], [1,1] ], axis = 0) >>> c [0] array ([0, 0]) # ¿Qué está pasando? Cómo encontrar el valor promedio de cada dirección de columna es 0, ¿no debería ser array [0.5,0.5]
El problema está aquí, le di a c un atributo de una matriz en la "fila gris" antes, y comenzó a almacenar
matriz ([[0, 0],
[3, 8],
[2, 2]])
Tales datos, porque los elementos que contiene son todos int, por lo que el sistema cree que la matriz que desea es int, pero al final. Desea que almacene el tipo flotante, como el "buen corazón" del sistema, definitivamente se convertirá en int. Fue precisamente esta "buena intención" lo que hizo que el programa saliera mal.
Método: agregar tipo de datos
>>> c = np.array (lista (zip (a, b)), dtype = np.float32) >>> c [0] = np.mean ([[0,0], [1,1]] , axis = 0) >>> c [0] array ([ 0.5, 0.5], dtype = float32) # ¡Eso es correcto!
3. Tipos de datos en numpy:
Tipo de datos
|
Descripción
|
bool_
|
Booleano (verdadero o falso), almacenado como un byte
|
En t_
|
Tipo entero predeterminado (igual que Clong; generalmente int64 o int32)
|
INTC
|
Igual que Cint (generalmente int32 o int64)
|
INTP
|
Entero para indexar (igual que Cssize_t; generalmente int32 o int64)
|
INT8
|
Bytes (-128 a 127)
|
INT16
|
Entero (-32768 a 32767)
|
INT32
|
Entero (-2147483648 a 2147483647)
|
Int64
|
Entero (-9223372036854775808 a 9223372036854775807)
|
UINT8
|
Entero sin signo (0 a 255)
|
UINT16
|
Entero sin signo (0 a 65535)
|
UINT32
|
Entero sin signo (0 a 4294967295)
|
UINT64
|
Entero sin signo (0 a 18446744073709551615)
|
flotador_
|
Short para float64.
|
float16
|
Punto flotante de media precisión: bit de signo, 5 exponente, 10 mantisa
|
FLOTANTE32
|
Número de coma flotante de precisión simple: bit de signo, exponente de 8 bits, mantisa de 23 bits
|
float64
|
Punto flotante de doble precisión: bit de signo, exponente 11, 52 mantisa
|
complejo_
|
Abreviatura de complejo 128.
|
complejo64
|
Números complejos, compuestos por dos números de coma flotante de 32 bits (real e imaginario)
|
complejo128
|
Números complejos, compuestos por dos números de coma flotante de 64 bits (real e imaginario)
|
4. Referencia:
https://www.numpy.org.cn/ (Enlace oficial del sitio web)
https://www.cnblogs.com/hackpig/p/8183470.html (la diferencia entre lista y matriz)
https://www.cnblogs.com/chenhuabin/p/11412818.html (tipo de datos en numpy) <------------------------- Es muy recomendable que los estudiantes que aprenden Matrix echen un vistazo