Skip to main content
 首页 » 编程设计

python之我怎样才能修复熵产生的 nan

2025年05月04日23exmyth

我正在尝试从 np.histogram 产生的数组中计算熵

mu1, sigma1 = 0, 1 
s1 = np.random.normal(mu1, sigma1, 100000) 
hist1 = np.histogram(s1, bins=100, range=(-20,20), density=True) 
data1 = hist1[0] 
ent1 = -(data1*np.log(np.abs(data1))).sum()  

但是,这个 ent1 会返回 nan。这里有什么问题?

请您参考如下方法:

问题是直方图中的概率为零,这在应用香农熵公式时没有数值意义。一种解决方案是忽略零概率。

mu1, sigma1 = 0, 1 
s1 = np.random.normal(mu1, sigma1, 100000) 
hist1 = np.histogram(s1, bins=100, range=(-20,20), density=True) 
data1 = hist1[0] 
non_zero_data = data1[data1 != 0] 
ent1 = -(non_zero_data*np.log(np.abs(non_zero_data))).sum()