У меня есть массив, и я хочу создать маску для этого массива на основе порогового значения. Извините, если объяснение немного запутанное.
Первый шаг — найти интервалы элементов, превышающие половину порогового значения, затем, если максимальное значение в этих интервалах превышает пороговое значение, все эти элементы помечаются как 1..
Однако, если имеется менее 10 элементов, которые находятся ниже половины порогового значения, но между двумя интервалы выше половины порога, все они помечены как 1.
Это MWE с 2 примерами:
У меня есть массив, и я хочу создать маску для этого массива на основе порогового значения. Извините, если объяснение немного запутанное. Первый шаг — найти интервалы элементов, превышающие половину порогового значения, затем, если максимальное значение в этих интервалах превышает пороговое значение, все эти элементы помечаются как 1.. Однако, если имеется менее 10 элементов, которые находятся ниже половины порогового значения, но между двумя интервалы выше половины порога, все они помечены как 1. Это MWE с 2 примерами: [code]import numpy as np
# the +1 is to include the upper limit of the band bands_idxs_above_half_thresh = np.split( idxs_above_half_thresh, np.where(np.diff(idxs_above_half_thresh) != 1)[0] + 1 )
for band in bands_idxs_above_half_thresh: band_max = np.max(val_array[band]) if band_max >= thresh: mask[band] = 1
for idx, band in enumerate(bands_idxs_above_half_thresh[1:]): prev = bands_idxs_above_half_thresh[idx+1-1] dist = np.abs(prev[-1] - band[0]) if 1 < dist