将随机浮点列表转换为最近定义的整数集



在一组有限的整数值中,将伪随机浮点数转换为最接近的值的最简单/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。

这比评论中介绍的平分算法效率低(也不那么漂亮!(,但无论如何,我想这一算法很容易实现和理解。

相关内容

最新更新