编程语言
首页 > 编程语言> > 在Python中使用numpy / scipy记录非常小的值

在Python中使用numpy / scipy记录非常小的值

作者:互联网

我有一个Nx1数组,对应于概率分布,即元素之和总和为1.这表示为常规的numpy数组.由于N可能相对较大,例如10或20,许多单独的元素非常接近0.我发现当我采用log(my_array)时,我得到错误“FloatingPointError:在日志中遇到无效值”.请注意,这是在故意设置numpy中的seterr(invalid =’raise’)之后.

我该如何处理这个数字问题?我想表示对应于概率分布和它们的记录的向量而不舍入到0,从那时起我最终得到log(0),这引起了错误.

谢谢.

解决方法:

您可以根据所需的准确度放下尾巴.

eps = 1e-50
array[array<eps]=eps
log(array)

标签:python,numpy,scipy,numerical-methods
来源: https://codeday.me/bug/20190518/1129277.html