Как я могу использовать векторизацию или есть другой способ избежать использования цикла for с массивом numpy?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу использовать векторизацию или есть другой способ избежать использования цикла for с массивом numpy?

Сообщение Anonymous »

У меня есть массив numpy, в первом столбце которого указано время, а в других столбцах содержатся значения сигналов. Цель состоит в том, чтобы использовать алгоритм поиска пиков для всех столбцов значений сигнала и получить пики и соответствующие им времена. Мой код выглядит так:

Код: Выделить всё

import numpy as np
from peakutils import indexes

arr = stress_data.to_numpy()
times_all = arr[:,0]
peaks_all = []
width = 125

for i in range(1,np.shape(arr)[1]):
x = arr[:,i]
xf = x - np.mean(x)
threshold = 0.1*np.average(xf) / np.max(xf)

# Find x-coordinates of peaks in signal
peaks = indexes(xf, thres = threshold, min_dist = width)

sg = [times_all[peaks], xf[peaks]]
peaks_all.append(sg)
Этот код работает так, как и ожидалось, но проблема в том, что его запуск занимает много времени.
Я попытался оптимизировать его с помощью np.apply_along_axis и определить обработку функция для этого, но выполнение этого способа заняло еще больше времени. Вот код, который я использовал для этого:

Код: Выделить всё

def process_column(x):
xf = x - np.mean(x)
threshold = 0.1 * np.average(xf) / np.min(xf)
valleys = indexes(xf, thres=threshold, min_dist=width)
return [times_all[valleys], xf[valleys]]

valleys_all = np.apply_along_axis(process_column, axis=0, arr=data_all.T)
О массиве numpy: помимо столбца времени, необходимо обработать 10 столбцов и 10,8 миллиона строк. Любая помощь в оптимизации будет оценена по достоинству

Подробнее здесь: https://stackoverflow.com/questions/787 ... or-loop-wi
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»