在 Python 中舍入到给定的数字
Posted
技术标签:
【中文标题】在 Python 中舍入到给定的数字【英文标题】:Round to a given number in Python 【发布时间】:2011-10-24 05:35:28 【问题描述】:我正在运行一个模拟,其中人们以小(月、周)的增量老化。但是,我在不一致的年龄间隔中有危险。是否有一种简单/有效的方法可以随时将我的年龄四舍五入到最接近的年龄组(为了提取该年龄的危险?
age_groups = np.array([0, .01, .1, 5, 10, 15, 20, 25, 30, 35, 40])
【问题讨论】:
您能否举例说明您的危险年龄区间?听起来您只想确定每个人适合哪些危险组,但从您提供的信息中我无法完全判断。 【参考方案1】:我假设您的年龄为 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 数组和您想要四舍五入的年龄传递给它:)
【讨论】:
请注意,这不会向量化,除非您广播并创建一个大数组,否则 unutbu 的 searchsorted 答案是有效的向量化版本。【参考方案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】:您可能希望使用k-mean 算法对这些元素进行聚类,以下是一些答案:Python k-means algorithm
【讨论】:
以上是关于在 Python 中舍入到给定的数字的主要内容,如果未能解决你的问题,请参考以下文章
如何在 JavaScript 中舍入一个数字? .toFixed() 返回一个字符串?