[英]Pythonic way to remove elements from Numpy array closer than threshold
[英]Remove values from numpy array closer to each other
實際上,我想從numpy數組中刪除彼此更靠近的元素。例如,我有數組[1,2,10,11,18,19]
那么我需要可以給出類似[1,10,18]
[1,2,10,11,18,19]
輸出的代碼[1,10,18]
因為2
更接近1,依此類推。
這是在一維numpy數組中查找連續值序列的第一個值的簡單函數。
import numpy as np
def find_consec(a, step=1):
vals = []
for i, x in enumerate(a):
if i == 0:
diff = a[i + 1] - x
if diff == step:
vals.append(x)
elif i < a.size-1:
diff = a[i + 1] - x
if diff > step:
vals.append(a[i + 1])
return np.array(vals)
a = np.array([1,2,10,11,18,19])
find_consec(a) # [1, 10, 18]
歡迎使用stackoverflow。 以下是可以回答您問題的代碼:
def closer(arr,cozy):
result = []
result.append(arr[0])
for i in range(1,len(arr)-1):
if arr[i]-result[-1]>cozy:
result.append(arr[i])
print result
例:
a = [6,10,7,20,21,16,14,3,2]
a.sort()
closer(a,1)
output : [2, 6, 10, 14, 16, 20]
closer(a,3)
Output: [2, 6, 10, 14, 20]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.