python - Python 的 NumPy.around : Rounding NumPy Arrays 中更好的舍入

标签 python arrays numpy rounding

我正在寻找一种以更直观的方式舍入 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 设置为舍入到“最接近的 even 数”。这会产生以下内容:

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

那么我的问题是,舍入到最接近的数字的最有效方法是什么,而不仅仅是最接近的偶数。

有关 np.around 的更多信息,请参阅 its documentation .

最佳答案

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 的显式错误。

关于python - Python 的 NumPy.around : Rounding NumPy Arrays 中更好的舍入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11975203/

相关文章:

python - 你如何使用 nltk.util.breadth_first 来搜索?

python - Pandas 数据帧错误 "tuple index out of range"

python numpy 数组索引

Python:Pep8 E128 缩进错误......这怎么能被样式化?

python - conn.send ('Hi' .encode()) BrokenPipeError : [Errno 32] Broken pipe (SOCKET)

php - 在关联数组中搜索和替换

java - 如何按升序对从 java 端点获取的 JSON 响应进行排序

python - 将零重新定位到多维 numpy 数组中最后一个维度的末尾

python - 导入错误 : Could not import 'rest_framework_simplejwt.authentication.JWTAuthentication'

java - 在数组中查找特定的 char 元素