在一组有限的整数值中,将伪随机浮点数转换为最接近的值的最简单/Python方法是什么?
例如,给定值[0.123, 2.234, 8.222]
和finite set {1, 2, 3}
我想要[1, 2, 3]
的输出列表
如果您不介意使用numpy模块,
import numpy as np
vals = [0.123, 2.234, 8.222]
ints = [1, 2, 3]
output = [ints[np.argmin([abs(x - y) for x in ints])] for y in vals]
可以做这项工作。如果已按降序(ints = [3, 2, 1]
(对ints
进行排序,则1.5将映射为2。
这比评论中介绍的平分算法效率低(也不那么漂亮!(,但无论如何,我想这一算法很容易实现和理解。