Cython:我应该使用np.float_t而不是双精度来存储类型内存视图



关于cython中的内存视图,如果我使用numpy浮点数组,使用NumPy类型(例如np.float_t)键入视图而不是简单地执行double有什么好处?

我是否应该以同样的方式键入cdef,例如。

ctypedef np.float64_t np_float_t
...
@cython.profile(False)
@cython.wraparound(False)
@cython.boundscheck(False)
cdef np_float_t mean_1d(np_float_t [:] v) nogil:
    cdef unsigned int n = v.shape[0]
    cdef np_float_t n_sum = 0.
    cdef Py_ssize_t i
    for i in range(n):
        n_sum += v[i]
    return n_sum / n

如果您查看 cython 中包含的 numpy 头文件(例如,在 master 分支中,它是 __init__.pxd ),您会发现

    ctypedef double       npy_double

ctypedef npy_double     float_t

换句话说,float_tdouble,所以使用np.float_t应该没有优势。

最新更新