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

5 python numpy scipy numerical-methods

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

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

谢谢.

Spa*_*man 1

它们有多“接近”0?Python 似乎很乐意取 10^ 的对数——非常大:

>>> log(0.0000000000000000000000000001)
-64.472382603833282
Run Code Online (Sandbox Code Playgroud)

另外,你为什么要记录日志?一旦你拿走了它们,你打算用它们做什么?