Эффективно для l oop для numpy массивов - PullRequest
0 голосов
/ 07 мая 2020

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)

Теперь я должен применить то же самое для всех данных и, следовательно, «для l oop» для всех столбцов и вычислить разделитель fft. Кажется, я не могу придумать эффективного способа сделать это. my для l oop выглядит следующим образом

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)

Затем мне нужен другой для l oop, чтобы получить матрицу 64 x 128 одну за другой и применить fft. В MATLAB, если у нас есть структуры, мы можем сделать это с одной для l oop, и каждая ячейка содержит вывод. Можем ли мы сделать что-то подобное в Python?

1 Ответ

0 голосов
/ 07 мая 2020

fftpack.fft будет применено к последней оси по умолчанию, но вы также можете указать любую другую ось:

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

Затем вы можете изменить форму снова, если хотите: data_fft.reshape(64, -1).

...