Mejor redondeo en NumPy.around de Python: Redondeo de matrices NumPy

Estoy buscando una manera de redondear una matriz numpy de una manera más intuitiva. Tengo algunos de varios flotadores, y me gustaría limitarlos a solo unos pocos decimales. Esto se haría como tal:

>>>import numpy as np >>>np.around([1.21,5.77,3.43], decimals=1) array([1.2, 5.8, 3.4]) 

Ahora el problema surge cuando se trata de redondear números que están exactamente entre los pasos de redondeo. Me gustaría 0.05 redondeado a 0.1, pero np.around está configurado para redondear al “número par más cercano”. Esto produce lo siguiente:

 >>>np.around([0.55, 0.65, 0.05], decimals=1) array([0.6, 0.6, 0.0]) 

Entonces, mi pregunta equivale a cuál es la forma más efectiva de redondear al número más cercano y no simplemente al número par más cercano.

Para obtener más información sobre np.around, consulte su documentación .

La forma de hacerlo es correcta, pero si desea hacer algo diferente, podría, por ejemplo, restar una cantidad mucho menor que la precisión de redondeo, por ejemplo,

 def myround(a, decimals=1): return np.around(a-10**(-(decimals+5)), decimals=decimals) In [22]: myround(np.array([ 1.21, 5.77, 3.43]), 1) Out[22]: array([ 1.2, 5.8, 3.4]) In [23]: myround(np.array([ 0.55, 0.65, 0.05]), 1) Out[23]: array([ 0.5, 0.6, 0. ]) 

La razón por la que elegí 5 aquí fue que al no incluir la distinción par / impar, estás introduciendo implícitamente un error promedio de alrededor de 10 ** (- (decimal + 1)) / 2, por lo que no debes quejarte de un explícito error de 1/10000 de ese error.