我正在尝试从 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()
