2016-08-02 2 views
1

Я ищу способ интерполяции и одновременного расширения массива 2D numpy до произвольной длины. Например сказать, что мой массивМассив интерполяционной матрицы Matplotlib до произвольной длины

array = [0,0,0] 
     [1,1,1] 
     [2,2,2] 

После вызова функции, я хочу массив длиной 5:

new_array = [0, 0, 0] 
      [0.5, 0.5, 0.5]    
      [1, 1, 1] 
      [1.5, 1.5, 1.5] 
      [2, 2, 2] 

В идеале, это будет работать на любом массиве любой длины, к новой длине. Например, если мой массив составлял 1000 точек, и мне нужно, чтобы он составлял 1500 очков. Есть ли способ сделать это легко и просто в Scipy или Numpy? Я просмотрел модуль scipy.interpolate, но не смог увидеть, как я могу это достичь. Любое направление было бы очень полезно.

Спасибо.

ответ

0

Вы можете попробовать:

from scipy import interpolate 

n = 5 
np.column_stack([interpolate.interp1d(c,c)(np.linspace(c[:1,], c[-1:], n)) for c in arr.T]) 

Out[45]: 
array([[ 0. , 0. , 0. ], 
     [ 0.5, 0.5, 0.5], 
     [ 1. , 1. , 1. ], 
     [ 1.5, 1.5, 1.5], 
     [ 2. , 2. , 2. ]])