我有一个矢量数组,它是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)
并且结果仍然是相同的数组:|
答案 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)