如何在2个数组之间查找最接近的值

时间:2019-03-15 02:49:59

标签: python python-3.x python-2.7

例如:

a=[1,2,3]
b=[1.1,1.2,2.1,2.2,3.1,3.2]
print answer
>>[1.1,2.1,3.1]

2 个答案:

答案 0 :(得分:1)

使用您的示例列出这是我的解决方案。 它使用列表推导来列出a和b中的值之间的差异。这使用abs(value)仅具有差的正值。 它索引差异中的最小值,并找到b中的值。这将添加到答案中并最终打印出来。

a = [1, 2, 3]
b = [1.1, 1.2, 2.1, 2.2, 3.1, 3.2]
answer = []
for i in a:
    difference = [abs(i - j) for j in b]
    answer.append(b[difference.index(min(difference))])
print(answer)

当然,此解决方案适用于列表b中的整数和唯一值。暂时不要紧,因为答案中的相同值只有两次。

答案 1 :(得分:0)

函数find_closest从列表a和整个列表b中获取一个值,并在列表中返回最接近的值。

我们通过为a列表中的每个条目附加函数的结果来构建答案。

a = [1,2,3]
b = [1.1,1.2,2.1,2.2,3.1,3.2]


def find_closest(anchor, comparisons):
    # find index of number in comparisons that is closest to anchor
    diffs = [abs(anchor-val) for val in comparisons]
    minimum_index = diffs.index(min(diffs))
    return comparisons[minimum_index]
answer = []
for comp in a:
    answer.append(find_closest(comp,b))

print(answer)