#python #numpy #matrix
Вопрос:
Учитывая 2-мерный массив чисел X размерности [m,m] и 1-мерный массив Y длины m, я хочу рассчитать результирующую 2-мерную матрицу P также размерности [m, m], элемент которой [i, j] получается с помощью следующей операции:
P[i][j] = Y[i] * Y[j] * np.dot(X[i],X[j])
Есть ли более быстрый способ, чем применение вложенного цикла for?
Ответ №1:
Вы можете использовать:
P = Y*Y[:, None]*np.dot(X, X.T)
пример:
>>> X = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
>>> Y = np.array([10, 11, 12])
>>> P = Y*Y[:, None]*np.dot(X, X.T)
>>> P
array([[ 1400, 3520, 6000],
[ 3520, 9317, 16104],
[ 6000, 16104, 27936]])