【问题标题】:Numpy types for Cython usersCython 用户的 Numpy 类型
【发布时间】:2016-01-04 18:04:31
【问题描述】:

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

即这些类型有什么区别:

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

np.float32
np.npy_float32
np.float32_t

据我所知:第一种类型是动态的,即 Cython 将生成一些代码以在运行时检测该类型的大小。另外两种类型是静态的,即使用它的代码将使用每种类型的预定义大小进行编译。请纠正我。

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

【问题讨论】:

    标签: python numpy cython


    【解决方案1】:

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

    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)
    

    np.float32_t 只是np.npy_float32typedef,可以用作简写。

    【讨论】:

      猜你喜欢
      • 2012-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多