Cython用户的Numpy类型

Ibr*_*iev 8 python numpy cython

我不太明白numpy.{typename},numpy.npy_ {typename}和numpy.{typename} _t之间的区别是什么,当我从Cython代码中使用它们时?

即这些类型的区别是什么:

# test.pyx
cimport numpy as np
import numpy as np

np.float32
np.npy_float32
np.float32_t
Run Code Online (Sandbox Code Playgroud)

正如我现在所理解的那样:第一种类型是动态的,即Cython将生成一些代码以在运行时检测该类型的大小.另外两种类型是静态的,即使用它的代码将使用每种类型的预定义大小进行编译.请指正.

其他链接:https://docs.scipy.org/doc/numpy/reference/c-api.dtype.html#c-type-names

rob*_*twb 9

np.float32 是NumPy的TypeDescriptor,它是一个Python对象,可以查询并传递给NumPy来构造数组,就像在Python中一样.

np.npy_float32 是C类型,可以在需要C类型的任何地方使用,例如

cdef np.npy_float32 x = 1.902
cdef np.ndarray[np.npy_float32, ndim=2] A = np.zeros((3, 4), dtype=np.float32)
Run Code Online (Sandbox Code Playgroud)

np.float32_t简单地一个的typedefnp.npy_float32可用于作为简写.