我正在运行一个模拟,其中人们以小的(月,周)增量变老。但是,我在不一致的年龄区间内有危险。是否有一种简单/有效的方法可以在任何时间将我的年龄四舍五入到最近的年龄组(为提取该年龄组的风险而用)?
age_groups = np.array([0, .01, .1, 5, 10, 15, 20, 25, 30, 35, 40])
我假设您有如下年龄:0.5、5、6、10、32、32.5等需要归入您的age_groups数组中。
这是一个简单的一行代码解决问题 :)
假设您已经有:
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()]
假设您想将年龄分组为由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