8

令人困惑的是,如果你想创建一个你使用的数组

chunk = np.array ( [[94.,3.],[44.,4.]], dtype=np.float64)

但是如果你想在buffer引用中定义类型,你可以使用

cdef func1 (np.ndarray[np.float64_t, ndim=2] A):

    print A 

np.float64注意和之间的区别np.float64_t

我的猜测

我猜 atype identifier是使用 Cython C-liketypedef语法显式创建的

ctypedef np.float64_t dtype_t

但是 numpytype只是 Python<type 'type'>类型。

>>> type ( np.float64)
<type 'type'>

s 上的 Numpy 文档对dtype我没有帮助。http://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html

4

1 回答 1

7

在您的 cython 代码中,您可以:

import numpy as np
cimport numpy as np

第一行在 python 空间中导入 numpy 模块,但第二行仅在 cython 空间中包含 numpy.pxd。

您可以在 cython 安装文件夹中找到 numpy.pxd。它将 float64_t 定义为:

ctypedef double       npy_float64
ctypedef npy_float64    float64_t
于 2012-06-13T03:34:49.720 回答