У меня есть трехмерный тензор A размера (M, N, N). У меня также есть весовой вектор р длина М. Я хочу, чтобы вычислитьСамый быстрый способ взять
Размера N может быть большим, так что я хочу осуществить его в эффективном способе. Я использую следующий код:
import numpy as np
temp=np.array([p[m]*A[m] for m in range(M)])
B=sum(temp);
Я хочу знать, существуют ли более быстрые и эффективные способы реализации этого. Причина, по которой это важно, состоит в том, что, когда N велико, вышеупомянутая переменная temp сохраняет M этих N * N-матриц. Поэтому я думаю, что мы можем использовать «цикл цикла», возможно, но я читал, что для циклов медленнее, чем списки.
Как насчет np.tensordot (p, A, (0,0))? – pikachuchameleon
«tensordot» один значительно быстрее, чем тензор (в 10 раз быстрее, когда M = 1000, N = 100) –
Вы имеете в виду быстрее, чем вышеупомянутый метод einsum? – pikachuchameleon