使用numpy integers时出现错误结果[重复]

b1payxdu  于 2023-10-19  发布在  其他
关注(0)|答案(1)|浏览(100)

此问题已在此处有答案

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的区别只是长度,不应该导致这样的混乱。先谢谢你

3xiyfsfu

3xiyfsfu1#

你是对的,除了数据类型的长度之外,两者之间应该没有什么不同。
在我的测试中,我发现当我将mylambda设置为5.5时,poisson(70,mylambda)poisson(np.int64(70),mylambda)都返回相同的值,其中返回值为2.2822519060129615e-51
我想知道你定义/计算mylambda的方式是否是问题所在?也许你可以给予更多的背景知识,这些是如何被调用的,以及它们的参数是如何计算的!也许到那时会更清楚什么是错的。:)

相关问题