Ускорение поиска самой длинной непрерывной последовательности/серии значенийPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Ускорение поиска самой длинной непрерывной последовательности/серии значений

Сообщение Anonymous »


У меня есть маскированный набор данных за 30 лет, содержащий значения для дней, в которые наблюдалась волна тепла. Я хочу рассчитать возникновение самой продолжительной тепловой волны в каждой ячейке сетки. Приведенный ниже код работает нормально, когда я разрезаю набор данных за один год, и для получения результата требуется 2 или 3 минуты. Однако данные за 30 лет даже через час продолжают обрабатываться. Кто-нибудь может решить проблему?

ff — это xarray.DataArray, который содержит три измерения = 't2m' время: 10958 широта: 27 долгота: 21
fs = hw.where(hw.rolling(time=3).count()==3).sel(time=slice('1991','2020')) фф = фс время = 0 лати = 0 лонги = 0 для t в диапазоне (1, ff.shape[0]*ff.shape[1]*ff.shape[2]): # Добавляем текущее значение к значению предыдущего временного шага если np.any(ff[tim, lati, longi] > 1): ff[тим, лати, лонги] = 1 еще: ff[тим, лати, лонги] = 0 лонги = лонги + 1 если лонги == 21: лонги = 0 лати = лати + 1 если лати == 27: лати = 0 Тим = Тим + 1 если время == 10959: перерыв время = 0 лати = 0 лонги = 0 для t в диапазоне (1, ff.shape[0]*ff.shape[1]*ff.shape[2]): # Добавляем текущее значение к значению предыдущего временного шага if np.any(ff[tim, lati, longi] == 1): ff[tim, lati, longi] = ff[tim, lati, longi] + ff[tim-1, lati, longi] еще: ff[тим, лати, лонги] = ff[тим, лати, лонги] лонги = лонги + 1 если лонги == 21: лонги = 0 лати = лати + 1 если лати == 27: лати = 0 Тим = Тим + 1 если время == 10959: перерыв ff_max = ff.max(ось=0)
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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