关于python计算中不一致性的奇怪问题
我正在尝试使用Python学习泊松分布。 我想使用列表理解生成一个概率列表。 该公式保证不返回负数。 然而,当我在下面的列表理解中使用时,我得到了许多负数 请你解释一下我遗漏了什么导致了这个问题。 有关详细信息,请参见下面的行 谢谢大家关于python计算中不一致性的奇怪问题,python,list-comprehension,Python,List Comprehension,我正在尝试使用Python学习泊松分布。 我想使用列表理解生成一个概率列表。 该公式保证不返回负数。 然而,当我在下面的列表理解中使用时,我得到了许多负数 请你解释一下我遗漏了什么导致了这个问题。 有关详细信息,请参见下面的行 谢谢大家 import math import numpy as np lam = 15 a = np.arange(30) b = [np.exp(-lam)*(lam**x)/math.factorial(x) for x in a] [3.05902320501
import math
import numpy as np
lam = 15
a = np.arange(30)
b = [np.exp(-lam)*(lam**x)/math.factorial(x) for x in a]
[3.059023205018258e-07,
4.588534807527386e-06,
3.44140110564554e-05,
0.000172070055282277,
0.0006452627073085387,
0.0019357881219256162,
0.0048394703048140406,
0.010370293510315801,
-0.013141028594890315,
-0.0001781617069955619,
9.481664980368431e-05,
-2.362463102985818e-06,
-2.1020607345176417e-07,
-3.1555253576611854e-08,
-3.6677408619686507e-09,
3.5112039118960344e-10,
1.520183133726461e-11,
-1.3618446037306896e-12,
9.639826317732186e-14,
4.996694908364656e-16,
-1.6527804252450604e-16,
1.052286501865168e-17,
1.6130198477088384e-19,
3.5537768829770886e-21,
1.0354451630381044e-22,
-2.257593163998853e-23,
6.599657279663544e-27,
3.666476266479747e-27,
1.9641837141855786e-27,
-2.4206987189043917e-29]
np.arange30的元素是numpy.int64s,它可以溢出负数:
>>> a = np.arange(30)
>>> 15**a[19]
-4608176067875183057
对于列表理解,您根本不需要NumPy:
lam = 15
a = range(30)
b = [math.exp(-lam)*(lam**x)/math.factorial(x) for x in a]
np.arange30的元素是numpy.int64s,它可以溢出负数:
>>> a = np.arange(30)
>>> 15**a[19]
-4608176067875183057
对于列表理解,您根本不需要NumPy:
lam = 15
a = range(30)
b = [math.exp(-lam)*(lam**x)/math.factorial(x) for x in a]
我无意中遇到的第一个社区wiki。我无意中遇到的第一个社区wiki。