python - 处理零乘以 NaN
问题描述
我正在尝试估计随机变量 (RVs) 的熵,这涉及到 step: 的计算p_X * log(p_X)
。例如,
import numpy as np
X = np.random.rand(100)
binX = np.histogram(X, 10)[0] #create histogram with 10 bins
p_X = binX / np.sum(binX)
ent_X = -1 * np.sum(p_X * np.log(p_X))
有p_X
时应为零,这在数学上使整个术语为零。但是 python 将p_X * np.log(p_X)
asNaN
并将整个总和设为NaN
. 有没有什么方法可以管理(没有任何明确的 NaN 检查)p_X * np.log(p_X)
只要p_X
是零就给出零?任何见解和更正表示赞赏,并在此先感谢:)
解决方案
如果有scipy
,请使用scipy.special.xlogy(p_X,p_X)
. 它不仅可以解决您的问题,而且还比p_X*np.log(p_X)
.
推荐阅读
- redirect - Rspec:期望(请求).to not_redirect?(redirect_to 的对面)
- java - 获取两次之间的毫秒数
- r - 在 r 中自动更改向量的条目值
- swift - MacOS 应用程序:如何访问用户的文档文件夹?
- java - 我需要根据 Zoom 提供的 UCT 日期和时区在 Java 中创建一个 Date 对象。服务器的时区不能是一个因素
- postgresql - postgresql 在复制服务器上禁用 DELETE
- excel - 如果值不同,则获取颜色
- javascript - 有没有办法在 React 中创建动态状态和 setState
- html - 如何在 CSS 中为图像位置设置动画?
- sql-server - Microsoft SQL Server Management Studio:存储过程助手