Экстраполированный массив Python с неравным интервалом между элементами

У меня есть два набора больших массивов (здесь я сократил их):

x1 = [0, 2, 4, 6, 8, 10]

y1 = [0.2, 0.19, 0.22, 0.18, 0.22, 0.21]

x2 = [0, 0.2, 0.5, 1, 1.5, 2, 2.7, 3.5, 6, 10]

y2 = [5, 4.9, 4.9, 4.9, 5.2, 4, 4.6, 4, 4.3, 3.9] 

Таким образом, три вещи можно заметить о вышеупомянутых массивах:

  1. x1 и y1 имеют 6 значений, но x2 и y2 имеют 10 значений (точные числа не имеют значения, единственное, что имеет значение, это то, что x2 и y2 имеют гораздо больше значений, чем x1 и y1).

  2. x1 расположен равномерно, а x2 - нет.

  3. Массивы x начинаются и заканчиваются одинаковыми значениями.

Как мне создать новый массив с экстраполированными значениями y1 для всех значений x2?

Также важно отметить, что у y1 есть потенциальные значения, которые не будут включены в новый массив, например, в приведенном выше примере, y1[4] не нужен, потому что он не падает до значения x2.

Также обратите внимание, что у2 не имеет ничего общего с этой конкретной проблемой, я просто предоставил это для общего понимания.

Я попытался использовать подход, разработанный Jblasco для решения аналогичной проблемы: интерполировать массив python, чтобы минимизировать максимальную разницу между элементами, однако моя проблема несколько отличается от той, что была изложена в этой ссылке.

1 ответ

Решение

Кажется, это просто простая проблема интерполяции / экстраполяции.

import numpy as np

#here y2 is the new extrapolated array
y2 = np.interp(x2,x1,y1)
Другие вопросы по тегам