在Python中舍入到给定数字

时间:2011-08-10 15:48:00

标签: python numpy rounding

我正在进行模拟,其中人们以小(月,周)为增量进行老化。但是,我在不一致的年龄段内存在危险。是否有一种简单/有效的方法可以随时将我的年龄调整到最近的年龄组(为了提取该年龄段的危害?

age_groups = np.array([0, .01, .1, 5, 10, 15, 20, 25, 30, 35, 40])

3 个答案:

答案 0 :(得分:3)

我假设你有年龄,如.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数组和要舍入的年龄传递给它:)

答案 1 :(得分: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

答案 2 :(得分:0)

您可能想要使用k-mean算法对这些元素进行聚类,这里有一些答案:Python k-means algorithm

相关问题