Сравнить элементы вектора разных индексов между собой
Есть одномерный numpy массив arr.
import numpy as np
arr = np.array([56.58, 56.63, 56.39, 56.57, 56.74, 56.88, 56.71, 56.61, 56.64, 56.7,
57.23, 57.28, 57.46, 57.41, 57.35, 57.67, 57.52, 57.32, 57.29, 57.54])
Задача сравнить разные элементы с разными индексами между собой сохранив структуру вектора.
arr[-5] < arr[-4] and arr[-4] < arr[-3] and arr[-3] > arr[-2] and arr[-2] > arr[-1]
В результате ожидаю увидеть:
# array([nan nan nan nan nan 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.])
Ответы (1 шт):
Автор решения: nick
→ Ссылка
Решение с циклом:
res = np.full_like(arr, np.nan)
for i in range(5, len(arr)):
res[i] = arr[i - 5] < arr[i - 4] and arr[i - 4] < arr[i - 3] and arr[i - 3] > arr[i - 2] and arr[i - 2] > arr[i]
print(res)
Результат:
# array([nan nan nan nan nan 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.])