gpt4 book ai didi

python - numpy.dot 给出大整数的错误答案

转载 作者:太空宇宙 更新时间:2023-11-03 11:16:33 26 4
gpt4 key购买 nike

我正在研究一些线性代数的东西,只是想不通为什么 numpy 给出以下内容:

enter image description here

我从 mathematica 手工得到的结果是

enter image description here

编辑:如果您需要矩阵:

test = [[19722145, -21016468, 51417377],
[-185674670, 298847128, -428429486],
[289326728, -516012704, 691212936]]

A = [[9, 4, 1], [2, 0, 8], [-8, 8, -8]]

最佳答案

如@PaulPanzer 所述,您需要使用np.int64 dtype 数组。 NumPy 使用 np.int32 作为您的输入数组在您的平台/系统配置上1 并且不检查整数溢出。

但是,矩阵乘法的结果包含整数,这些整数太大而无法存储在 np.int32 中。

由于 NumPy 不会自动将输入数组向上转换为 np.int64,因此您需要在定义数组时或通过向上转换显式指定 np.int64 :

import numpy as np

test = np.array([[19722145, -21016468, 51417377],
[-185674670, 298847128, -428429486],
[289326728, -516012704, 691212936]],
dtype=np.int64)

A = np.array([[9, 4, 1],
[2, 0, 8],
[-8, 8, -8]],
dtype=np.int64)

res = np.dot(test, A)

print(res)

[[ -275872647 490227596 -559748615]
[ 2354058114 -4170134568 5632538242]
[-3957788344 6687010400 -9368478392]]

1 这是 another example 。还有一些 discussion on platform-specific issues

关于python - numpy.dot 给出大整数的错误答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50671172/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com