此问题已在此处有答案:
Integer overflow in numpy arrays(4个答案)
上个月关门了。
当在google colab中使用python时,发生了一些我试图理解的行为。
我有以下功能
def poisson(x,_lambda_):
return (math.exp(-_lambda_) * _lambda_ ** x) / math.factorial(x)
当我对原生python整数使用这个函数时,
poisson(70,mylambda)
-> 0.04474020748359926
但是当我使用numpy integers时,结果是错误的。
poisson(np.int64(70),mylambda)
-> -1.445513513413155e-113
有人能解释一下,我做错了什么吗?据我所知,从native integer到numpy integer的区别只是长度,不应该导致这样的混乱。先谢谢你
1条答案
按热度按时间3xiyfsfu1#
你是对的,除了数据类型的长度之外,两者之间应该没有什么不同。
在我的测试中,我发现当我将
mylambda
设置为5.5
时,poisson(70,mylambda)
和poisson(np.int64(70),mylambda)
都返回相同的值,其中返回值为2.2822519060129615e-51
我想知道你定义/计算
mylambda
的方式是否是问题所在?也许你可以给予更多的背景知识,这些是如何被调用的,以及它们的参数是如何计算的!也许到那时会更清楚什么是错的。:)