为numpy数组提供高效的for循环。

问题描述 投票:0回答:1

数据文件我有一个大小为[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×128矩阵一个一个地应用fft。在MATLAB中,如果我们有结构,我们可以用一个for循环来做,每个单元格都包含输出。我们可以在Python中做这样的事情吗?

python arrays python-3.x numpy fft
1个回答
0
投票

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

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

如果你愿意的话,你可以再次重塑形状。data_fft.reshape(64, -1).

© www.soinside.com 2019 - 2024. All rights reserved.