Да, вы можете использовать NumPy's outer()
.Это в основном проблема внешнего продукта, когда вы просто суммируете элементы полученной матрицы внешнего продукта n * n.Здесь единственными значениями, которые вы используете в своей матрице, являются первая строка и первый столбец.
Итак, все, что вам нужно сделать, это взять внешний продукт первой строки и первого столбца, используя np.outer
( документы ).Это все, что вы делаете в своем алгоритме с помощью вложенных циклов for.
Пример
import numpy as np
f = np.random.randint(1, 9, (3, 3)) # Create a test 3x3 matrix
col = f[:, 0] # first column enteries [5, 3, 8]
row = f[0, :] # first row enteries [5, 3, 4]
summ = np.sum(np.outer(row, col))
print (f)
print ('The sum is %d' %summ)
#[[5 3 4]
# [3 8 1]
# [8 7 2]]
# The sum is 192
Альтернатива в соответствии с предложением hpaulj is
np.einsum('i,j->', f[:,0], f[0,:])