在Python中按指定数字取整
我正在进行一个模拟,在这个模拟中,人们的年龄是以小的单位(比如月、周)逐渐增加的。不过,我在不同的年龄段中有一些不一致的风险。请问有没有简单有效的方法,可以在任何时候把我的年龄四舍五入到最近的年龄组,以便提取该年龄段的风险?
age_groups = np.array([0, .01, .1, 5, 10, 15, 20, 25, 30, 35, 40])
3 个回答
0
你可能想把这些元素分成几组,通常可以用一种叫做 k-均值 的算法来实现。这里有一些相关的答案:Python k-均值算法
2
假设你想把年龄分成几个组,这些组是由 age_groups
定义的。然后,你可以使用 np.searchsorted 来找出每个年龄属于哪个年龄段:
import numpy as np
ages=np.array([0,0.05,1,3,5,10,13,19,25,35])
age_groups = np.array([0, .01, .1, 5, 10, 15, 20, 25, 30, 35, 40])
index=age_groups.searchsorted(ages,side='left')
for age,nearest_age in zip(ages,age_groups[index]):
print('{a} --> {n}'.format(a=age,n=nearest_age))
这样就能得到
0.0 --> 0.0
0.05 --> 0.1
1.0 --> 5.0
3.0 --> 5.0
5.0 --> 5.0
10.0 --> 10.0
13.0 --> 15.0
19.0 --> 20.0
25.0 --> 25.0
35.0 --> 35.0
3
我假设你有一些年龄,比如0.5、5、6、10、32、32.5等等,这些年龄需要放入你已有的年龄组数组中。
这个问题其实很简单,只需要一行代码就能解决 :)
假设你有:
age_groups = np.array([0, .01, .1, 5, 10, 15, 20, 25, 30, 35, 40])
age = .5
解决方案是:
nearest_age = age_groups[(np.abs(age_groups-age)).argmin()]
把那行代码放到一个函数里,传入年龄组数组和你想要四舍五入的年龄就可以了 :)