作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想用任意小的正 x 或 x = 0 计算 x ln x 而没有下溢或被零除。我该怎么做?
我用谷歌搜索了“python numpy xlnx OR xlogx”,但没有找到有意义的结果。
x = 0
a = x * np.log(x)
b = np.log(np.power(x,x))
print(a,b)
for i in range(-30,30,10):
x = 10.**-i
a = x * np.log(x)
b = np.log(np.power(x,x))
print(a,b)
nan 0.0
6.90775527898e+31 inf
4.60517018599e+21 inf
230258509299.0 inf
0.0 0.0
-2.30258509299e-09 -2.30258512522e-09
-4.60517018599e-19 0.0
编辑添加:这是导致我的问题的另一个问题。但是计算 xlogx 的最佳方法是什么?当 x = 0 时,直接方法会导致 nans。
最佳答案
您可以使用 xlogy 来做到这一点scipy 中的函数:
from scipy.special import xlogy
from numpy import log
>>> xlogy(10, 10)
23.0258509299
>>> 10 * log(10)
23.0258509299
>>> xlogy(0, 0)
0.0
关于python - 用numpy计算xlogx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50198743/
我正在寻找一种计算向量熵的有效方法,无需对它们进行归一化,同时忽略任何非正值。 由于向量不是概率向量,不应归一化,所以我不能使用 scipy's entropy功能。 到目前为止,我找不到一个 num
我是一名优秀的程序员,十分优秀!