Интерполяция Python
У меня есть набор данных, который выглядит так:
Table-1
X1 | Y1
------+--------
0.1 | 0.52147
0.02 | 0.8879
0.08 | 0.901
0.11 | 1.55
0.15 | 1.82
0.152 | 1.95
Table-2
X2 | Y2
-----+------
0.2 | 0.11
0.21 | 0.112
0.34 | 0.120
0.33 | 1.121
Мне нужно интерполировать значение Y2
из таблицы-2 для значений X1
из таблицы-1, то есть мне нужно найти значения Y2
для следующих значений X
:
X1 | Y2
-------+-------
0.1 |
0.02 |
0.08 |
0.11 |
0.15 |
0.152 |
Примечание. Обе таблицы-1 и 2 имеют неравные интервалы. Количество записей (X, Y) будет отличаться, например, здесь мы имеем 6 (X1, Y1) записей в таблице-1 и только 4 (X2, Y2) в таблице 2.
Какой алгоритм интерполяции следует использовать в Numpy, и как это сделать?
Ответы
Ответ 1
numpy.interp
кажется желаемой функцией: передайте X1
как первый аргумент x, ваш X2
как второй аргумент xp, ваш Y2
в качестве третьего аргумента fp, и вы получите значения Y, соответствующие координатам X1
.
Y2_at_X1 = np.interp(X1, X2, Y2)
Я предполагаю, что вы хотите полностью игнорировать существующие значения Y1
. Это то, что делает вышеприведенный фрагмент. В противном случае вам нужно будет уточнить свой вопрос, чтобы объяснить, какую роль вы могли бы иметь для Y1
!
Если вы хотите более чем линейную интерполяцию, я предлагаю вам посмотреть scipy.interpolate
и tutorial, а не пытаться растягивать numpy за его простотой; -).