import numpy as np
from scipy.interpolate import interp1d
a = np.arange(10)
b = a + 100
iterp = interp1d(a, b, kind="previous", bounds_error=False)
print(iterp([-1,-2,5,8,12,25]))
# [nan nan 105. 108. nan nan]
Первые два значения nan
имеют смысл, но последние два - нет, поскольку доступно предыдущее значение.
Теперь, если я использую extrapolate:
iterp = interp1d(a, b, kind="previous", fill_value="extrapolate")
print(iterp([-1,-2,5,8,12,25]))
# [100. 100. 105. 108. 109. 109.]
Последние два 109.
имеют смысл, но первые два 100.
не имеют смысла, так как нет предыдущего значения.
Вывод, который я ищу, интуитивно понятен [nan nan 105. 108. 109. 109.]
.Конечно, я могу взять любой из вариантов выше в качестве основы и возиться с этим.Но есть ли прямой способ получить желаемый результат?