Объявление данной матрицы
import numpy as np
arr=np.array([[0. , 0.125, 0.75 , 0. , 0. ],
[0.125, 0. , 0. , 0. , 0. ],
[0.75 , 0. , 0. , 0. , 0.375],
[0. , 0. , 0. , 0. , 1.2 ],
[0. , 0. , 0.375, 1.2 , 0. ]])
с использованием списка и np.argwhere для условных индексов:
def replace(x,y,arr=arr,column_sums=arr.sum(axis=0),row_sum=arr.sum(axis=1)):
arr[x][y]=row_sum[x]*column_sums[y]
_=[replace(x,y) for x,y in np.argwhere(arr>0)]
Вывод:
array([[0. , 0.109375, 0.984375, 0. , 0. ],
[0.109375, 0. , 0. , 0. , 0. ],
[0.984375, 0. , 0. , 0. , 1.771875],
[0. , 0. , 0. , 0. , 1.89 ],
[0. , 0. , 1.771875, 1.89 , 0. ]])
Обратите внимание, что код может быть более оптимизирован, чтобы его лучше понять