有沒有一種簡單的方法,例如使用numpy,以獲得samples對于給定的X,并delta比下面的代碼?
>>> X = [1, 4, 5, 6, 11, 13, 15, 20, 21, 22, 25, 30]
>>> delta = 5
>>> samples = [X[0]]
>>> for x in X:
... if x - samples[-1] >= delta:
... samples.append(x)
>>> samples
[1, 6, 11, 20, 25, 30]
uj5u.com熱心網友回復:
如果出于性能原因(例如使用 numpy)打算“矢量化”程序,則可以計算小于每個元素加上 delta 的元素數量。這將為您提供要選擇的專案的索引,需要跳過的專案與要保留的前一個專案具有相同的索引。
import numpy as np
X = np.array([1, 4, 5, 6, 11, 13, 15, 20, 21, 22, 25, 30])
delta = 5
i = np.sum(X<X[:,None] delta,axis=1) # index of first to keep
i = np.insert(i[:-1],0,0) # always want the first, never the last
Y = X[np.unique(i)] # extract values as unique indexes
print(Y)
[ 1 6 11 20 25 30]
這假設數字按升序排列
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/361506.html
下一篇:用多個值替換單個值
