簡體   English   中英

"我可以矢量化 scipy.interpolate.interp1d"

[英]Can I vectorize scipy.interpolate.interp1d

interp1d非常適用於我擁有的單個數據集,但是我有超過 500 萬個需要插值的數據集。

我需要插值是三次的,每個子集應該有一個插值。

現在我可以用一個 for 循環來做到這一點,但是,要插入 500 萬個集合,這需要相當長的時間(15 分鍾):

interpolants = []
for i in range(5000000):             
    interpolants.append(interp1d(xArray[i],interpData[i],kind='cubic'))

我想做的可能看起來像這樣:

interpolants = interp1d(xArray, interpData, kind='cubic')

但是,這失敗了,並出現錯誤:

ValueError: x and y arrays must be equal in length along interpolation axis.

我的 x 數組(xArray)和我的 y 數組(interpData)都具有相同的尺寸......

我可以並行化 for 循環,但這只會稍微提高速度,我更喜歡矢量化操作。

在過去的幾天里,我也一直在嘗試做類似的事情。 我終於設法用np.vectorize<\/code>做到了,使用函數簽名<\/a>。 試試下面的代碼片段:

fn_vectorized = np.vectorize(interpolate.interp1d,
                                     signature='(n),(n)->()')
interp_fn_array = fn_vectorized(x[np.newaxis, :, :], y)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM