python - 舍入到最近的 bin

标签 python pandas numpy

我有一份收入费用 list ,需要将它们四舍五入到最近的垃圾箱。

例如,如果仅售出的产品成本如下:

import numpy as np
bins = np.array([9.95,19.95,79.95])

我有一些这样的指控:

x = np.array([6.68, 9.20, 12.5, 18.75, 21.59])

我关注了this example ,这绝对是最接近的解决方案:

y = np.take(bins,np.digitize(x,bins))

我认为将 right= 参数保留为 np.digitize 的默认值会完成我需要的,但结果仍然四舍五入:

In [10]: y
Out[10]: array([  9.95,   9.95,  19.95,  19.95,  79.95])

在我的特殊情况下,我需要将 向下舍入到最近的垃圾箱。例如,12.50 美元的费用仅与 9.95 美元相差 2.55 美元,但所选选项 19.95 美元与 7.45 美元相差。

编辑

虽然我链接到的解决方案中的一个答案可以向上/向下舍入,但似乎该方法可以返回不一致的结果,因此这篇新帖子。

最佳答案

如果您想舍入到某些值,您需要在它们的中点处拆分。像这样:

import numpy as np

bins = np.array([9.95,19.95,79.95])
centers = (bins[1:]+bins[:-1])/2

x = np.array([6.68, 9.20, 12.5, 18.75, 21.59])
res = bins[np.digitize(x, centers)]

给予

array([  9.95,   9.95,   9.95,  19.95,  19.95])

关于python - 舍入到最近的 bin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47337605/

相关文章:

python - 在 Visual Studio Code 中将焦点切换到 Jupyter (IPython) 终端

python - 如何在 Dockerfile 中添加 PYTHONPATH 的路径

python - Pandas 条件映射/填充/替换

python - 如何使用 pandas 将 Top N 之外的 "remaining"结果分组为 "Others"

python - 使用 pandas 正则表达式验证数据帧 header

python - scipy.optimize.fminbound : Set bounds on parameters

python - mac 运行 deepfakes - faceswap ' faceswap.py' 出现错误

Python创建时奇怪的文件名

python - 如何在 Python 中重写 DataFrame 中的列的字段?

用相同大小的数组替换 nan 子数组的 Pythonic 方法