簡體   English   中英

從numpy數組中刪除彼此靠近的值

[英]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.

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