Cython:将INFINITY或numpy.inf分配给类型化变量,结果为0

时间:2017-08-29 08:58:50

标签: python numpy cython infinity cythonize

我希望在名为cdef的文件中INFINITY constant.pxd常量,以便我可以在其他地方cimport。假设constant.pxd我们有:

import numpy as np
cimport numpy as np
from libc cimport math

ctypedef np.float32_t dtype_t

cdef dtype_t INF = math.INFINITY if math.INFINITY != 0. else np.float32('inf')

然而,这不起作用,例如,在另一个.pyx文件中:

from constant cimport INF
cpdef test():
    return INF

哪个收益率:

>> 0.0

我还尝试将INF直接定义为np.float32('inf')np.inf。然而,它们最终都是零。

但是,我可以在INF = np.float32('inf')文件中定义.pyx,而不是在constant.pyx文件中定义from constant import INF from constant cimport dtype_t cdef class A: cdef dtype_t data def __cinit__(self, dtype_t data): self.data = data # ... 并按预期使用它。我不清楚这是否会导致执行问题,如果我们有,请说:

from constant import INF

a = A(INF)

并且:

user.agents.find_each(&:destroy)

0 个答案:

没有答案