【发布时间】:2020-09-03 07:08:17
【问题描述】:
我试图从前两个分量的傅里叶变换中计算矩阵距离。矩阵是 40k x 40k,我这样做的方式非常慢。有没有一种计算矩阵的方法是一种更高效更快的方法?
import numpy as np
from scipy.linalg import dft
#Transform the data using Fourier Transform.
ft = norm_data.dot(dft(8).transpose())/sqrt(8)
def ft_distance_calc(x,y):
temp = np.zeros((x,y))
for i in range(x):
for z in range(y):
temp[i,z] = sqrt(np.square(abs(ft[i,0:2] - ft[z,0:2])).sum())
return temp
ft_distance = ft_distance_calc(40000,40000)
【问题讨论】:
-
您可能应该尝试计算整个 np.arrays,而不是特定的单元格,它会快得多。嵌套循环导致了巨大的延迟
-
@archer 不是一个好建议。您仍然可以防止循环并对选定的列进行基于数组的计算。
-
什么是
norm_data?请提供最小的例子。谢谢