python - 查找数据最适合的 bin

标签 python list

我正在尝试编写一个函数 get_best_bin 将一个值放入最合适的 bin 中:

我有一个 bin,它是(开始,结束)值的列表。

def get_best_bin(value, bins):
    return index of bins that the value fits best into. 

例如

bins = [
 (0.0, 0.5),
 (0.5, 1.5),
 (1.5, 3.0),
 (4.5, 5.5)
]

value = [0.4,1.0]

等等

get_best_bin(value, bins)

会返回:

1

因为 [0.4,1.0] 中的大部分行都属于 bin (0.5, 1.5)。 * 注意:尽管与 bin (0.0, 0.5) 有一个小交集,但大部分交集在 (0.5, 1.5)*

到目前为止,这是我尝试过的方法,但我只能获得存在交集的可能的 bins:

possible_bins = set()
for ind,width in enumerate(bins):
    if width[0] <= value[0] <= width[1]:
        possible_bins.add(width)
    if width[0] <= value[1] <= width[1]:
        possible_bins.add(width)
print(possible_bins)

#{(0.0, 0.5), (0.5, 1.5)}

我可以假设任何值都会与至少一个 bin 有一些交集。

最佳答案

你可以这样做:

def get_best_bin(value, bins):
    intesections = [min(value[1], b[1]) - max(value[0], b[0]) for b in bins]
    return intesections.index(max(intesections))

解释:

如果有交集,交集从max(value[0], b[0])开始,到min(value[1], b[1])结束。所以交集的长度是end - start,意思是min(value[1], b[1]) - max(value[0], b[0]).

列表理解是创建一个交集长度列表(对应于每个 bin),然后您可以返回该列表中最大数字的索引。

关于python - 查找数据最适合的 bin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60113765/

相关文章:

python - 为什么我应该将 Python 包安装到 `~/.local` 中?

Python:在 sqlite3 或 mysql 中存储字符串列表的正确方法

python - 如何将RGB图像像素转换为L*a*b*?

Python - 如果 x 不在 a、b、c 中的任何一个中

python - 当一串列表被传递到 Python 中的 join() 函数时如何解释结果?

java - 如何根据两个列表包含的元素比较两个列表?

python - 无法将列表转换为集合,引发 "unhashable type: ' 列表'“错误

python - 使用不明确的用户输入填写 RASA 表单中的槽位

list - 如何将对象列表注入(inject)温莎城堡的构造函数中

python - 从文本文件中的行创建字符串列表的大多数 pythonic 方法?