gpt4 book ai didi

python - 如何将数字四舍五入到指定的上限或下限?

转载 作者:太空宇宙 更新时间:2023-11-03 12:26:13 24 4
gpt4 key购买 nike

我正在处理一个数据集,在该数据集上我有某些值需要四舍五入到下限/上限。

例如。如果我希望上限为 9 并下限为 3 并且我们有这样的数字 -

[ 7.453511737983394, 
8.10917072790058,
6.2377799380575,
5.225853201122676,
4.067932296134156 ]

我们希望将列表四舍五入为 3 或 9,例如 -

[ 9, 
9,
9,
3,
3 ]

我知道我们可以用一种很好的旧方式来做到这一点,比如在数组中迭代并找到差异,然后得到最接近的那个。

我的方法代码:

for i in the_list[:]:
three = abs(3-the_list[i])
nine = abs(9-the_list[i])

if three < nine:
the_list[i] = three
else:
the_list[i] = nine

我想知道是否有一种内置于 python 中的快速而肮脏的方法,例如:

hey_bound = round_the_num(number, bound_1, bound_2) 

我知道我们可以 my-approach-code 但我非常确定这已经以更好的方式实现了,我试图找到它但没有找到它,我们到了。

解决此问题的任何猜测或直接链接都将是惊人的。

最佳答案

编辑:
到目前为止,我认为最好的方法是使用 numpy(避免“手动”循环),并简单计算 the_list 和两个边界之间的差异数组(因此这里没有昂贵的乘法),以然后有条件地添加一个或另一个,具体取决于哪个较小:

import numpy as np

the_list = np.array([ 7.453511737983394,
8.10917072790058,
6.2377799380575,
5.225853201122676,
4.067932296134156 ])

dhi = 9 - the_list
dlo = 3 - the_list
idx = dhi + dlo < 0
the_rounded = the_list + np.where(idx, dhi, dlo)
# array([9., 9., 9., 3., 3.])

我会将 round 函数应用于无偏移归一化列表,然后缩减并添加偏移量:

import numpy as np

the_list = np.array([ 7.453511737983394,
8.10917072790058,
6.2377799380575,
5.225853201122676,
4.067932296134156 ])

hi = 9
lo = 3
dlt = hi - lo

the_rounded = np.round((the_list - lo)/dlt) * dlt + lo

# [9. 9. 9. 3. 3.]

关于python - 如何将数字四舍五入到指定的上限或下限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53728124/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com