我有一个对应于概率分布的 Nx1 数组,即元素之和为 1。这表示为一个常规的 numpy 数组。由于 N 可能相对较大,例如10 或 20,许多单个元素非常接近 0。我发现当我使用 log(my_array) 时,我收到错误“FloatingPointError:log 中遇到无效值”。请注意,这是在有意在 numpy 中设置 seterr(invalid='raise') 之后。
我该如何处理这个数字问题?我想表示对应于概率分布的向量,它们取对数而不四舍五入到 0,从那时起我最终取 log(0),这会引发错误。
谢谢。
最佳答案
你可以根据你需要的准确度来放下尾部。
eps = 1e-50
array[array<eps]=eps
log(array)
关于python - 在 Python 中使用 numpy/scipy 记录非常小的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4206528/