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

标签 python numpy scipy numerical-methods

我有一个对应于概率分布的 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/

相关文章:

python - python 中使用 numpy.pad 函数出现内存错误

python - 如何从字符串 'long' 创建一个 numpy dtype?

python - SciPy 如何计算 pearsonr() 函数中的 p 值?

python - 为数组的索引实现 np.subtract.outer([[array .... python 中的结构

python - 如何用自然数替换二进制数组中的 1,同时保持 0 的位置?

python - 从 oauth2client.contrib.appengine 导入 AppAssertionCredentials 导入错误 : No module named appengine

Python/Linux/Daemon 进程试图显示 gtk.messagedialog

python - Django 模型继承覆盖字段属性中使用的变量

python - 用 Python 关闭大括号

python - 将属性列表插入python中的对象列表