python – Cython:对于类型化的内存视图,我应该使用np.float_t而不是double

关于cython中的内存视图,使用NumPy类型(如np.float_t)键入视图是否有任何优势,而不是简单地在我使用numpy浮点数组时执行双操作?

我应该以同样的方式输入cdef,做e. G.

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_t是double,因此使用np.float_t应该没有任何优势.

上一篇:为什么Python3类型.列表是列表的子类,而列表又是类型.列表的子类?


下一篇:Python 3.6中的通用NamedTuple