首页 > 解决方案 > 处理零乘以 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是零就给出零?任何见解和更正表示赞赏,并在此先感谢:)

标签: pythonnumpy

解决方案


如果有scipy,请使用scipy.special.xlogy(p_X,p_X). 它不仅可以解决您的问题,而且还比p_X*np.log(p_X).


推荐阅读