四、灵活专业的@generated_jit
@jit修饰符在很多情况下是极其有效的,但是有时需要根据输入变量的类型来决定函数的实现功能。@generated_jit修饰符编译时能够进行一些特例化选择。
示例:
importnumpy as npfrom numba importgenerated_jit, types
@generated_jit(nopython=True)defis_missing(x):"""Return True if the value is missing, False otherwise."""
ifisinstance(x, types.Float):return lambdax: np.isnan(x)elifisinstance(x, (types.NPDatetime, types.NPTimedelta)):#The corresponding Not-a-Time value
missing = x('NaT')return lambda x: x ==missingelse:return lambda x: False
上面的代码完成的是根据输入去判断缺省值的事情。
注意下面问题:
1、在调用的时候,传入的参数,使用变量的numba类型,而不是值;
2、这个修饰函数返回的结果不是一个计算结果;
五、创建Numpy通用函数(universal funtions)
首先看下什么叫做universal funtions:
A universal function (or ufunc for short) is a function that operates on ndarrays in an