我有一个简单的 Python 函数:
def get_lerp_factor( a, x, b ):
if x <= a: return 0.
if x >= b: return 1.
return (x - a) / (b - a)
许多NumPy函数,比如numpy.sin(x),可以处理浮点数或数组。
那么我该如何以同样的方式扩展它,使其也可以处理x为NumPy数组的情况?
def get_lerp_factor( a, x_maybe_array, b ):
out = (x_maybe_array - a) / (b - a) # this should work...
# but now I have to clamp each element of out between 0 and 1
我需要检查x的类型,并作出相应的处理吗?
那么这样怎么样:
def get_lerp_factor( a, x_anything, b ):
x = np.array( x_anything )
out = ...(x)
# now typecast out back into the same type as x... will this work?
?
map
和列表推导式速度较慢,因此这是不可取的。 - Gareth Rees