首页 > 解决方案 > 关于选择两个列表的最佳选项的建议(最小和最大)python

问题描述

我有三个列表,每个列表有 200,000 项。第一个标题为“config”的列表是配置名称列表(这些是百叶窗配置)。第二个列表具有每个配置的照度性能(相同的顺序,这意味着 config_a001 产生的照度值是 350)。最后一个列表对每个配置都有一个值(顺序也相同,因此 config_002 的值为 0.24)

config = ['config_a001', 'config_a002', ......]
illuminnace = [350, 376, 260, 500, 450,......]
LUR_value = [0.3,0.24,.7,.1,.....]

我需要选择产生最高照度和最低 LUR 值的最佳 5 种配置。如果这不可能,我需要选择具有最低 LUR 值的最佳 5 种配置,但它们的照度应该高于特定阈值,比如 450。

我知道这样的事情应该使用遗传算法来解决,但我在这方面有经验,如果有人在这里提供建议,我将不胜感激。

标签: pythongenetic-algorithm

解决方案


您可以考虑将数据组织到 pandas DataFrame 中:

import pandas as pd

config = ['config_a001', 'config_a002', 'config_a003', 'config_a004', 'config_a005', 'config_a006']
il = [350, 376, 310, 340, 290, 375]
lur = [0.3, 0.24, 0.21, 0.31, 0.24, 0.28]

创建列表字典

d = {'config': config, 'il': il, 'lur': lur}

从您的字典中创建一个 DataFrame 对象

df = pd.DataFrame(d)

使用sort_values()并切片列中的前 5 个结果config

res = df.sort_values(['il', 'lur'], ascending=[False, True])[:5]['config'].values

这提供了一个带有配置值的 numpy 数组。

list(res)
# Result: ['config_a002', 'config_a006', 'config_a001', 'config_a004', 'config_a003']

推荐阅读