我有一個數據集,其時間爲t
,數據爲d
。不幸的是,我在一段時間後改變了輸出數據的速度(最初速度太高)。我想對數據進行採樣,以便有效地移除高頻導出的數據,但在結束時保持低頻導出的數據。Python:相對於數據集統一切片陣列
考慮下面的代碼:
arr = np.loadtxt(file_name,skiprows=3)
哪裏t = arr[:,0], d = arr[:,1]
。
這裏得到一個統一的切片功能:
def get_uniform_slices(arr, N_desired_points):
s = arr.shape
if s[0] > N_desired_points:
n_skip = m.ceil(s[0]/N_desired_points)
else:
n_skip = 1
return arr[0::n_skip,:] # Sample output
但是,這些數據然後查找罰款高頻導出的數據,但對於低頻輸出的數據過於稀疏。
有沒有某種方式切片,使索引相對於t
均勻間隔?
任何幫助,非常感謝。
這是功能我用來查找索引,根據公認的答案:
def get_uniform_index(t,N_desired_points):
t_uniform = np.linspace(np.amin(t),np.amax(t),N_desired_points)
t_desired = [nearest(t_d, t) for t_d in t_uniform]
i = np.in1d(t, t_desired)
return i
可你['np.interp'(HTTPS://docs.scipy .org/doc/numpy/reference/generated/numpy.interp.html)的數據? – mgilson
我更喜歡保留原始數據。 – Charlie
當然,但是如果你正確地處理你想要維護的點,那麼你應該沒有問題... – mgilson