在cython中使用这么多int
数据类型让我有点头疼。
np.int, np.int_, np.int_t, int
我猜纯python中的int
等同于np.int_
,那么np.int
是从哪里来的?我在numpy中找不到文档?另外,既然我们已经有了int
,为什么还要有np.int_
呢
在cython中,我猜当用作cdef int
或ndarray[int]
时,int
变成了C类型,而当用作int()
时,它仍然是python的施法器?
在C中,np.int_
等同于long
吗?所以cdef long
和cdef np.int_
是一样的
在什么情况下我应该使用np.int_t
而不是np.int
?例如cdef np.int_t
,ndarray[np.int_t]
...
有人能简要解释一下这些类型的错误使用会如何影响已编译的cython代码的性能吗?
发布于 2014-02-18 20:30:32
np.int_
是默认的整数类型(as defined in the NumPy docs),在64位系统上这将是C long
。np.intc
是int32
或int64
的默认C int
。np.int
是内置int
函数的别名
>>> np.int(2.4)
2
>>> np.int is int # object id equality
True
cython数据类型应该反映C
数据类型,因此cdef int a
是一个C int
,依此类推。
至于np.int_t
(相当于NumPy np.int_
数据类型的Cython
编译时),np.int64_t
是Cython
编译时相当于np.int64
的数据类型
https://stackoverflow.com/questions/21851985
复制相似问题