Итак, я хочу сместить значения в matrix_a
в соответствии со значениями в matrix_b
. Поэтому, если значение в matrix_b
в позиции 0,0
равно 1
, то элемент в result_matrix
в 0,0
должен быть элементом, который находится в 1,1
в matrix_a
. У меня уже есть эта работа с использованием следующего кода:
import numpy as np
matrix_a = np.matrix([[1, 2,3], [4, 5, 6],[7, 8, 9]])
matrix_b = np.matrix([[1,1,0],[0,-1,0],[0,0,-1]])
result_matrix = np.zeros((3,3))
for x in range(matrix_b.shape[0]):
for y in range(matrix_b.shape[1]):
value = matrix_b.item(x,y)
result_matrix[x][y]=matrix_a.item(x+value,y+value)
print(result_matrix)
, что приводит к:
[[5. 6. 3.]
[4. 1. 6.]
[7. 8. 5.]]
Сейчас это довольно медленно на больших матрицах, и у меня есть ощущение, что это может оптимизировать, используя одну из numpy или функции Сципи. Может кто-нибудь сказать мне, как это можно сделать более эффективно?