El gran pozo de PYTHON-numpy.array, el tipo de datos en numpy

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

 

Supongo que te gusta

Origin www.cnblogs.com/xiao-yu-/p/12725816.html
Recomendado
Clasificación