Python - 如何删除特定范围内的数组中的某些值?

时间:2017-05-03 15:20:09

标签: arrays python-3.x

我有一个矢量数组,它是pt = [83。 0。,131。0.,178. 0.,179. 0.,227. 0.] 所以我想将这些值相互比较,并删除范围为+ -5的所有值。例如,在这个数组中,我想删除值179,因为它在值178 + -5的范围内。 我试过这个

for i in pt_list:
position = [i[0] for i in pt_list]
counter1 += 1 
if(counter1 > 1):
    if not position in range (prior_x0 - 5, prior_x0 +6):
        arr = np.array([[position, 0]])
        pt_list = np.append(later_pt_list, later_arr, axis = 0)
prior_x0 = position
a = pt_list[np.argsort(later_pt_list[:,0])]

print(a)

并且结果仍然是相同的数组:|

2 个答案:

答案 0 :(得分:0)

你想要的是什么?

pt_list = [83.0, 131.0, 178.0, 179.0, 227.0]
def removeNumbers(value,ran):
    return [x for x in pt_list if x not in (range(value + 1, value + (ran+1)) + range(value - ran, value))]
print removeNumbers(178,5)

答案 1 :(得分:0)

这是你需要的吗?我添加了一小部分来处理输入数据的格式。我假设它是一个带矢量的文本列表。如果没有,您可以相应地更改它。 我有一个包含理解列表的版本,但阅读起来非常难看。 输出是' list_float'。 我假设您想要保留第一个向量在其他向量范围内,并删除以下内容

# Make sure the format of your input is correct
list =  ['83. 0.', '131. 0.', '178. 0.', '179. 0.', '227. 0.']
list_float = []
for point in list:
    head, _, _ = point.partition(' ')
    list_float.append(float(head))

# This is the bit removing the extra part
for pos, point in enumerate(list_float):
    for elem in list_float[pos+1:]:
        if (elem < point+5.) and (elem > point-5.):
            list_float.remove(elem)

print(list_float)