Как отмечает @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 Вот другой пример .Кроме того, было обсуждение проблем платформы .