интерполировать к большему 1D массиву, используя python - PullRequest
0 голосов
/ 31 марта 2020

У меня есть пять массивов 1D с кратной длиной. Я хочу, чтобы все массивы имели одинаковую длину с cD1. Я хочу применить интерполяцию к массивам одинаковой длины. Я пытался использовать linear_interp = interp1d(cD5, cD1), но он не работает должным образом. Любая помощь приветствуется!

from scipy.interpolate import interp1d
coeffs = wavedec(data, 'sym5', level=5)
cA5,cD5,cD4,cD3,cD2,cD1=coeffs
cD5.shape #(248,)
cD4.shape #(488,)
cD3.shape #(967,)
cD2.shape #(1926,)
cD1.shape #(3844,)

1 Ответ

2 голосов
/ 31 марта 2020

Насколько я могу судить, вам не хватает координаты x.

Попробуйте добавить общую x координату для ваших массивов:

import numpy as np
from scipy.interpolate import interp1d

common_length_data = []
common_x = np.linspace(0, 1, len(cD1))
for c in [cA5,cD5,cD4,cD3,cD2,cD1]:
    x = np.linspace(0, 1, len(c))
    f = interp1d(x, c)
    common_length_data.append(f(common_x))
...