2016-08-02 61 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. ]])