У меня есть 1D массив значений, который должен быть монотонным (скажем, уменьшающимся), но есть случайные области, где значение увеличивается с индексом.
Мне нужен массив, в котором каждый регион заменяется значением, непосредственно предшествующим ему, так что результирующий массив сортируется.
Итак, если заданный массив:
a = np.array([10.0, 9.5, 8.0, 7.2, 7.8, 8.0, 7.0, 5.0, 3.0, 2.5, 3.0, 2.0])
Я хочу, чтобы результат был
b = np.array([10.0, 9.5, 8.0, 7.2, 7.2, 7.2, 7.0, 5.0, 3.0, 2.5, 2.5, 2.0])
Здесь представлено графическое представление:
Я знаю, как добиться этого с помощью цикла Python, но есть ли способ сделать это с помощью оборудования NumPy?
Код Python для ясности:
b = np.array(a)
for i in range(1, b.size):
if b[i] > b[i-1]:
b[i] = b[i-1]