Hey*_*his 7 python numpy cython
令人困惑的是,如果你想创建一个你使用的数组
chunk = np.array ( [[94.,3.],[44.,4.]], dtype=np.float64)
Run Code Online (Sandbox Code Playgroud)
但是如果要在buffer引用中定义类型,则使用
cdef func1 (np.ndarray[np.float64_t, ndim=2] A):
print A
Run Code Online (Sandbox Code Playgroud)
注意之间的差异np.float64和np.float64_t.
我的猜测
我猜这是一个type identifier用Cython C式typedef语法明确创建的
ctypedef np.float64_t dtype_t
Run Code Online (Sandbox Code Playgroud)
但numpy type只是Python <type 'type'>类型.
>>> type ( np.float64)
<type 'type'>
Run Code Online (Sandbox Code Playgroud)
关于dtypes 的Numpy文档对我没有帮助.http://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html
在你的cython代码中,你做:
import numpy as np
cimport numpy as np
Run Code Online (Sandbox Code Playgroud)
python空间中的第一行导入numpy模块,但第二行只包含cython空间中的numpy.pxd.
你可以在你的cython安装文件夹中找到numpy.pxd.它将float64_t定义为:
ctypedef double npy_float64
ctypedef npy_float64 float64_t
Run Code Online (Sandbox Code Playgroud)