Numpy 如何使用无穷大或负无穷大在Cython中表示

Numpy 如何使用无穷大或负无穷大在Cython中表示

在本文中,我们将介绍如何在Cython和Numpy中使用无穷大或负无穷大。

阅读更多:Numpy 教程

Numpy中的无穷大和负无穷大

在Numpy中,可以使用np.inf表示无穷大,使用-np.inf表示负无穷大。例如,下面的代码片段将一个数组中的所有元素都赋值为无穷大:

import numpy as np

array = np.zeros((3,3))
array[:] = np.inf
print(array)
Python

输出结果如下:

[[inf inf inf]
 [inf inf inf]
 [inf inf inf]]
Python

在Numpy中使用无穷大或负无穷大非常方便,但在Cython中你需要注意。

Cython中的无穷大和负无穷大

在Cython中,需要使用C的标准库math中的INFINITY-INFINITY来表示无穷大和负无穷大。例如:

import cython
from libc.math cimport INFINITY

@cython.wraparound(False)
@cython.boundscheck(False)
cpdef double test():
    return INFINITY
Python

上面的函数test()将会返回正无穷大。如果要返回负无穷大,则只需使用-INFINITY即可。

需要注意的是,C的标准库头文件中定义了INFINITY-INFINITY,但并没有将其作为常量导出,因此在Cython中需要使用cimport导入。

使用无穷大和负无穷大的行为与Numpy中的相同。例如,下面的代码将一个数组中的所有元素设置为负无穷大:

import numpy as np
cimport cython
from libc.math cimport -INFINITY

@cython.boundscheck(False)
@cython.wraparound(False)
def set_to_neg_inf(D):
    D[:] = -INFINITY
Python

需要注意的是,仅当你的Cython代码中使用Numpy数组时,才需要导入Numpy库并使用np.inf-np.inf。否则,使用C标准库即可。

总结

在本文中,我们介绍了如何在Cython中使用无穷大和负无穷大。在Numpy中,可以使用np.inf-np.inf方便地表示这些值。但在Cython中,需要使用C标准库中的INFINITY-INFINITY。记住要使用cimport导入C标准库头文件,否则Cython将无法识别这些常量。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册