Сегодня Python укусил меня, с поведением interp2d
я не ожидал.Я привык к interp1d
, например, определяя
f = interp1d(np.linspace(0, 1, 10), np.linspace(1, 2, 10), kind='linear')
, мы получаем интерполятор, чувствительный к порядку аргументов, с которыми он вызывается.f([0, 0.5, 1])
возвращает array([1, 1.5, 2])
, а f([0.5, 1, 0])
возвращает array([1.5, 2], 1)
.Как я и ожидал.
Однако с interp2d
я получаю что-то другое.После определения
g = interp2d([0,1], [0,1], [[1,2], [2,3]], kind='linear')
вызов g([0, 0.2, 1], [0.3])
возвращает array([1.3, 1.5, 2.3])
, но переупорядочение аргумента не действует.Например, g([0.2, 1, 0])
дает мне то же самое.Что нежелательно.Я не нахожу никаких следов этого в документации interp2d
, не говоря уже о возможности изменить это поведение.
Я также попытался преобразовать этот пример в RectBivariateSpline
, вызов вызывает исключение, когда заданный векторне заказан: ValueError("Error code returnod by bispev: 10")
.
Я мог бы реализовать обертку вокруг interp2d с помощью argsort
, чтобы он позаботился о порядке и впоследствии исправил его.Но мне трудно поверить, что это путь, предположив, что можно получить то, что я хочу, как данность.Предложения, пожалуйста!?