首页 > 解决方案 > numpy数组的高效for循环

问题描述

Data_File 我有一个大小为 [8192x29] 的数据框,我想计算每一列的 fft,但在此之前我需要将每一列 (8192 x 1) 重塑为 (64 x 128)。所以对于一列它是这样的

data_1 = np.array(data_all.iloc[:,16])
data_1 = np.reshape(data_1,(64,128))
data_standarized = preprocessing.scale(data_1)
fft = fftpack.fft(data_standarized)

现在我必须对所有数据应用相同的数据,因此对所有列应用“for循环”并计算fft分离。我似乎想不出一种有效的方法来做到这一点。我的for循环如下

data_k = np.zeros((64,3712))
for i in range(0,data_size[1]):
        data_k[0:63, i:i+127]= data_all[:,i].reshape(64,128)

然后我需要另一个for循环来一个一个地获取64 x 128矩阵并应用fft。在 MATLAB 中,如果我们有结构,我们可以使用一个 for 循环来完成,并且每个单元格都包含输出。我们可以在 Python 中做这样的事情吗?

标签: pythonarrayspython-3.xnumpyfft

解决方案


fftpack.fft默认情况下将应用于最后一个轴,但您也可以指定任何其他轴:

data_new = data.reshape(64, 128, 29)
data_fft = fftpack.fft(data_new, axis=1)

然后,如果您愿意,您可以再次重塑:data_fft.reshape(64, -1)


推荐阅读