Round in numpy to Nearest Step
12,224
I think you don't need numpy
:
def getRoundedThresholdv1(a, MinClip):
return round(float(a) / MinClip) * MinClip
here a
is a single number, if you want to vectorize this function you only need to replace round
with np.round
and float(a)
with np.array(a, dtype=float)
Related videos on Youtube
Author by
RandomCPlusPlus
Updated on June 04, 2022Comments
-
RandomCPlusPlus almost 2 years
I would like to know how I can round a number in numpy to an upper or lower threshold which is function of predefined step size. Hopefully stated in a clearer way, if I have the number 123 and a step size equal to 50, I need to round 123 to the closest of either 150 or 100, in this case 100. I came out with function below which does the work but I wonder if there is a better, more succint, way to do this.
Thanks in advance,
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)