У меня есть эта строка кода:
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 с, а поскольку это внутри другого цикла, при суммировании требуется довольно много времени.
Может ли кто-нибудь предложить дальнейшую оптимизацию?