首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python numpy操作没有正确计算。

Python numpy操作没有正确计算。
EN

Stack Overflow用户
提问于 2021-03-19 08:21:35
回答 1查看 56关注 0票数 0

我偶然发现了一些非常奇怪的东西,我想知道它是否是Python错误,还是我对Numpy数组没有正确理解的东西。

我在计算内核技巧:

代码语言:javascript
复制
(c + np.matmul(x1, x2.T)) ** n

N=n次方;c=自由参数

设x1为(3,6),x2 = (10,10)

计算矩阵应该会导致90的结果。但是,当我使用c=2和n=5时,结果是不正确的!它给了-1999119360而不是6590815232!

我在密码上做错什么了吗?还是一只虫子?因为当你减去n,结果是正确的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-19 08:39:51

c + np.matmul(x1, x2.T)操作的结果是一个numpy.int32。问题似乎是在这个类上使用**操作时。结果也将是numpy.int32。但是这种类型的最大值是2147483647,在这个例子中,计算结果是6590815232。这会导致整数溢出。我希望你能理解。

np.matmul(x1, x2.T)的结果转换为int类将提供正确的输出。ie:

代码语言:javascript
复制
(c + int(np.matmul(x1, x2.T))) ** n

另一个选项是将值转换为numpy.int64,如下所示:

代码语言:javascript
复制
(c + np.int64(np.matmul(x1, x2.T))) ** n
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66704707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档