使用Python進(jìn)行插值非常方便,可以直接使用scipy中的interpolate
import numpy as npx1 = np.linspace(1, 4096, 1024)x_new = np.linspace(1, 4096, 4096)from scipy import interpolatetck = interpolate.splrep(x1, data)y_bspline = interpolate.splev(x_new, tck)
其中y_bspline就是從1024插值得到的4096的數(shù)據(jù)
但是,scipy中好像并沒(méi)有進(jìn)行下采樣的函數(shù),嗯..難道是因?yàn)樘^(guò)簡(jiǎn)單了么,不過(guò)好像用一個(gè)循環(huán)就可以完成,但如果把向量看成一個(gè)時(shí)間序列,使用pandas中的date_range模塊也可以十分方便的以不同頻率進(jìn)行采樣,并且,很多對(duì)文件的操作都是使用pandas操作的。
import pandas as pdindex = pd.date_range('1/1/2000', periods=4096, freq='T') #這個(gè)起始時(shí)間任意指定,freq為其頻率data = pd.read_table(filename, names=['feat'])data.index = indexdata_obj = data.resample('4T', label='right') #第一個(gè)為抽樣頻率,label表示左右開(kāi)閉區(qū)間data_new = data_new.asfreq()[0:]
因?yàn)閐ata.resample返回的是一個(gè) pandas.tseries.resample.DatetimeIndexResampler對(duì)象
所以想要獲取其中的值可以通過(guò) data_new.asfreq()[0:]獲取
更多方法詳見(jiàn) pandas.DataFrame.resample
以上這篇Python對(duì)數(shù)據(jù)進(jìn)行插值和下采樣的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持武林站長(zhǎng)站。
新聞熱點(diǎn)
疑難解答
圖片精選