Как дополнительно оптимизировать операции над элементами матрицы для экономии времени - PullRequest
0 голосов
/ 09 ноября 2019

У меня есть эта строка кода:

prob = np.asarray(
          [np.asarray(
               [np.exp(-0.5 * a[kIndex][:,iIndex].T @ 
                              invCov[kIndex] @ 
                              a[kIndex][:,iIndex]) / 
                np.sqrt( ((2*np.pi)**nDims) * detCov[kIndex] )
                for iIndex in range(nData)])
          for kIndex in range(curK)])

, которая генерирует матрицу размером curK x nData (10 x 845678), выполняя серьезные операции над некоторыми матрицами.

IРанее это реализовывалось в циклах for, выполнение которых занимало еще больше времени, но оптимизировалось для этого. В настоящее время для запуска этой строки требуется 140 с, а поскольку это внутри другого цикла, при суммировании требуется довольно много времени.

Может ли кто-нибудь предложить дальнейшую оптимизацию?

...