In [15]: a = np.array([0.5, 0.5, 0, 0, 0])
In [16]: b = np.array([1, 0, 0, 0, 0])
In [17]: entropy(a, b)
Out[17]: inf
In [18]: entropy(b, a)
Out[18]: 0.6931471805599453
Run Code Online (Sandbox Code Playgroud)
从他们的文档中,我预计两者都会返回,inf因为给出的方程是S = sum(pk * log(pk / qk), axis=0)。第18行输出非无限的原因是什么?
该entropy(b, a)函数计算第一对:
>>> 1 * np.log(1/0.5)
>>> 0.6931471805599453
Run Code Online (Sandbox Code Playgroud)
对于entropy(a, b),有一种被零除的情况,0.5/0,它会导致无限解。
对于其余部分,entropy()假设0 * np.log(0/0) = 0.