首页 > 解决方案 > 将给定向量(B)的每个值四舍五入到 A 中最接近的值

问题描述

给定一组数字:

A = np.array([12,10,7,4,2,0,-3])

和另一组值:

B = np.array([14,8.8,2.3,-4,5.5])

python中是否有一种方法可以将B四舍五入到A的最接近值?

标签: pythonarraysnumpy

解决方案


这是一个 O(n log n) 的解决方案:

>>> AS = np.sort(A)
>>> bnd = (AS[:-1] + AS[1:]) / 2
>>> nearest = AS[bnd.searchsorted(B)]
>>> 
>>> nearest
array([12, 10,  2, -3,  4])

或者,如果您希望对领带进行四舍五入:

>>> nearest = AS[bnd.searchsorted(B, 'right')]
>>> nearest
array([12, 10,  2, -3,  7])

推荐阅读