Saltar al contenido

Cómo redondear un numpy array?

Hola usuario de nuestra web, tenemos la respuesta a lo que buscas, continúa leyendo y la encontrarás a continuación.

Solución:

Numpy proporciona dos métodos idénticos para hacer esto. Cualquiera de los usos

np.round(data, 2)

o

np.around(data, 2)

ya que son equivalentes.

Consulte la documentación para obtener más información.


Ejemplos:

>>> import numpy as np
>>> a = np.array([0.015, 0.235, 0.112])
>>> np.round(a, 2)
array([0.02, 0.24, 0.11])
>>> np.around(a, 2)
array([0.02, 0.24, 0.11])
>>> np.round(a, 1)
array([0. , 0.2, 0.1])

Si desea que la salida sea

array([1.6e-01, 9.9e-01, 3.6e-04])

el problema no es realmente una característica faltante de NumPy, sino que este tipo de redondeo no es algo estándar. Puede hacer su propia función de redondeo que logre esto así:

def my_round(value, N):
    exponent = np.ceil(np.log10(value))
    return 10**exponent*np.round(value*10**(-exponent), N)

Para un manejo de solución general 0 y valores negativos también, puedes hacer algo como esto:

def my_round(value, N):
    value = np.asarray(value).copy()
    zero_mask = (value == 0)
    value[zero_mask] = 1.0
    sign_mask = (value < 0)
    value[sign_mask] *= -1
    exponent = np.ceil(np.log10(value))
    result = 10**exponent*np.round(value*10**(-exponent), N)
    result[sign_mask] *= -1
    result[zero_mask] = 0.0
    return result

Vale la pena señalar que la respuesta aceptada redondeará los flotadores pequeños a cero.

>>> import numpy as np 
>>> arr = np.asarray([2.92290007e+00, -1.57376965e-03, 4.82011728e-08, 1.92896977e-12])
>>> print(arr)
[ 2.92290007e+00 -1.57376965e-03  4.82011728e-08  1.92896977e-12]
>>> np.round(arr, 2)
array([ 2.92, -0.  ,  0.  ,  0.  ]) 

Puedes usar set_printoptions y un formateador personalizado para arreglar esto y obtener una impresión más numpy-esque con menos decimales:

>>> np.set_printoptions(formatter='float': "0:0.2e".format)
>>> print(arr)
[2.92e+00 -1.57e-03 4.82e-08 1.93e-12]  

De esta forma, obtendrá toda la versatilidad de format y mantenga la precisión total de los tipos de datos de numpy.

También tenga en cuenta que esto solo afecta la impresión, no la precisión real de los valores almacenados utilizados para el cálculo.

Acuérdate de que tienes la capacidad de reseñar tu experiencia .

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *