12

より直感的な方法でnumpy配列を丸める方法を探しています。いくつかのフロートがありますが、小数点以下数桁に制限したいと思います。これはそのように行われます:

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

ここで、丸めステップの間に正確にある数値を丸めようとすると、問題が発生します。0.05を0.1に丸めたいのですが、np.aroundは「最も近い偶数」に丸めるように設定されています。これにより、次のようになります。

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

私の質問は、単純に最も近い偶数ではなく、最も近い数に丸める最も効果的な方法は何であるかということです。

np.aroundの詳細については、そのドキュメントを参照してください。

4

1 に答える 1

8

これは正しい方法aroundですが、別のことをしたい場合は、たとえば、丸め精度よりもはるかに少ない量を減算できます。たとえば、

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. ])

ここで選択した理由は5、偶数/奇数の区別を含めないことで、暗黙的に約10 **(-(decimal + 1))/ 2の平均エラーが発生するため、明示的なエラーについて文句を言うべきではないためです。そのエラーの1/10000の。

于 2012-08-16T01:03:48.917 に答える