处理零乘以NaN

Vig*_*n C 7 python numpy

我正在尝试估计随机变量(RVs)的熵,其中涉及步骤计算: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))
Run Code Online (Sandbox Code Playgroud)

p_X时应为零,在数学上使整个项为零。但是python将p_X * np.log(p_X)as设为NaN,并将整个总和设为NaN。有什么方法可以管理(无需对NaN进行任何显式检查)p_X * np.log(p_X)何时为零时提供p_X零?感谢您的任何见解和纠正,并在此先感谢:)

Pau*_*zer 6

如果有scipy,请使用scipy.special.xlogy(p_X,p_X)。它不仅可以解决您的问题,而且还有一个好处,那就是它比快一点p_X*np.log(p_X)