Python 不会显示 np.exp 市场份额值

Python won't show me np.exp marketshare values

我正在尝试使用以下公式估算市场份额:

c = np.exp(-Mu*a)/(np.exp(-Mu*a)+np.exp(-Mu*b))

其中 a 和 b 是 9x9 矩阵,其单元格值可以大于 1000。因为数字很小,所以 Python returns NaN 值。为了提高估计的精度,我已经尝试了 np.float128 但所有这一切都会引发错误,即 numpy 没有名为 float128 的属性。我也试过 longdouble,但还是没有成功。是否有其他方法可以让 Python 显示单元格的实际值而不是 NaN?

您有:

c = np.exp(-Mu*a)/(np.exp(-Mu*a)+np.exp(-Mu*b))

分子和分母乘以e^(Mu*a),得到:

c = 1/(1+np.exp(Mu*(a-b)))

这只是对同一公式的重新表述。

现在,如果 exp 项仍然太小,并且您不需要更精确的结果,那么您的 c 大约非常接近 1。如果您仍然需要控制精度,可以两边取log,用log(1+x).

的泰勒展开