脾气暴躁的结果,而矩阵相乘

现代

所以我有两个矩阵:

A = np.array([[93478902,  389555660,  163056852, 208537174],
              [256421362, 1068627076, 447283132, 572058098],
              [438743250, 1828454948, 765313074, 978809440]])

B = np.array([[1, 2, 3, 4],
              [5, 6, 7, 8],
              [9, 10, 12, 5],
              [10, 92, 23, 43]])

我使用numpy函数将它们相乘A.dot(B)
尽管预期结果(如我快速计算出的结果)是这样的:

[[5594140610, 23340280292, 9760363552, 12493632310]
 [15345685910, 64026781516, 26774387456, 34272361778]
 [26256930056, 109551815408, 45811788394, 58641073978]]

Numpy 100%确定应该是这样的:

[[ 1299173314  1865443812  1170428960  -391269578]
 [-1834183274  -397727924  1004583680   -87376590]
 [  487126280 -2117334288 -1432851862 -1488468166]]

而且我不知道我在哪里犯了一个错误,究竟从大于0的乘法中得到小于0的数字到底是怎么回事?有人能帮忙吗?

布洛贡

对我来说看起来像是溢出了。更改为dtype='int64'似乎可以解决问题:

>>> A = np.array([[93478902,  389555660,  163056852, 208537174],
...               [256421362, 1068627076, 447283132, 572058098],
...               [438743250, 1828454948, 765313074, 978809440]], dtype='int64')
>>>
>>> B = np.array([[1, 2, 3, 4],
                  [5, 6, 7, 8],
                  [9, 10, 12, 5],
                  [10, 92, 23, 43]])
>>> A.dot(B)
array([[  5594140610,  23340280292,   9760363552,  13272743630],
       [ 15345685910,  64026781516,  26774387456,  36409615930],
       [ 26256930056, 109551815408,  45811788394,  62297983874]],
      dtype=int64)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章