8

关于 cython 中的 memoryviews,如果我使用 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
4

1 回答 1

16

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

    ctypedef double       npy_double

ctypedef npy_double     float_t

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

于 2014-01-07T22:47:32.433 回答