所以我有两个矩阵:
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] 删除。
我来说两句