Результат со всеми восьмерками правильный. Возможно, вы перепутали поэлементное умножение и умножение матриц. numpy.dot
выполняет матричное умножение (когда применяется к 2D-массивам).
a = np.eye(2)
b = np.ones((2,2)) * 2
print(a)
print(b)
даст вам
[[1. 0.]
[0. 1.]]
[[2. 2.]
[2. 2.]]
Итак, b
- это матрица, состоящая из всех двоек. Теперь просто выполните матричное умножение a * b * b, и вы получите матрицу, состоящую из всех восьмерок.
a.dot(b)
приведет к
[[2. 2.]
[2. 2.]]
, а a.dot(b).dot(b)
даст
[[8. 8.]
[8. 8.]]