У меня есть Матрица А с формой (2,2, N) и Матрица V с формой (2, N)

Я хочу векторизовать следующее:

F = np.zeros(N)
for k in xrange(N):
    F[k] = np.dot( A[:,:,k], V[:,k] ).sum()

Каким-либо образом это можно сделать с помощью tenordot или любой другой функции numpy без явного зацикливания?

3
fmonegaglia 22 Ноя 2018 в 15:20

1 ответ

Лучший ответ

С помощью np.einsum -

F = np.einsum('ijk,jk->k',A,V)

Мы можем оптимизировать его далее с помощью optimize флага (проверьте документы), установленного как True.

2
Divakar 22 Ноя 2018 в 12:27