mea*_*ngs 5 python numpy pandas
我有一个收入费用清单,我需要向上或向下舍入到最近的垃圾箱.
例如,如果销售的产品成本如下:
import numpy as np
bins = np.array([9.95,19.95,79.95])
Run Code Online (Sandbox Code Playgroud)
我有几个这样的指控:
x = np.array([6.68, 9.20, 12.5, 18.75, 21.59])
Run Code Online (Sandbox Code Playgroud)
我按照这个例子,这绝对是最接近的解决方案:
y = np.take(bins,np.digitize(x,bins))
Run Code Online (Sandbox Code Playgroud)
我认为将right=参数保留为默认值np.digitize 可以完成我需要的操作,但结果仍然是四舍五入的:
In [10]: y
Out[10]: array([ 9.95, 9.95, 19.95, 19.95, 79.95])
Run Code Online (Sandbox Code Playgroud)
在我的特殊情况下,我需要向上或向下舍入到最近的bin.例如,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)]
Run Code Online (Sandbox Code Playgroud)
给
array([ 9.95, 9.95, 9.95, 19.95, 19.95])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
515 次 |
| 最近记录: |