我想知道如何将 numpy 中的数字舍入到上限或下限阈值,该阈值是预定义步长的函数。希望以更清晰的方式说明,如果我有数字 123 且步长等于 50,我需要将 123 舍入到最接近的 150 或 100,在本例中为 100。我得出了下面的函数,它可以完成这项工作但我想知道是否有更好、更简洁的方法来做到这一点。
提前致谢,
Paolo
def getRoundedThresholdv1(a, MinClip):
import numpy as np
import math
digits = int(math.log10(MinClip))+1
b = np.round(a, -digits)
if b > a: # rounded-up
c = b - MinClip
UpLow = np.array((b,c))
else: # rounded-down
c = b + MinClip
UpLow = np.array((c,b))
AbsDelta = np.abs(a - UpLow)
return UpLow[AbsDelta.argmin()]
getRoundedThresholdv1(143, 50)
pb360 的解决方案要好得多,使用 python3 中内置 round 的第二个参数。
我认为你不需要numpy
:
def getRoundedThresholdv1(a, MinClip):
return round(float(a) / MinClip) * MinClip
here a
是一个数字,如果你想向量化这个函数你只需要替换round
with np.round
and float(a)
with np.array(a, dtype=float)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)