gpt4 book ai didi

python - 在列表的排列中应用排名

转载 作者:太空宇宙 更新时间:2023-11-03 19:52:16 24 4
gpt4 key购买 nike

我有两个列表:

l1 = [0, 1, 12, 33, 41, 52, 69, 7.2, 8.9, 9.91]
l2 = [45, 51]

我需要从 l1 获取所有可能的组合(不重复),其大小等于 l2 的长度。然后将排名指标应用于 l2l1(对于每个组合)。最后我需要获得最接近的指标。 l1lx(lx 是排列列表)。

到目前为止我尝试过的(到目前为止它更像是伪代码):

import numpy as np

def apply_metric(predictions, targets):
return np.sqrt(((predictions - targets) ** 2).mean())

l1 = [0, 1, 12, 33, 41, 52, 69, 7.2, 8.9, 9.91]
l2 = [45, 51]

for item in l1:
#do the possible combinations
temp_result = apply_metric(np.array(l2), np.array(permuted_items))

输出:

best metric = 0 (identical)
best list = [45, 51]

最佳答案

您可以使用itertools permutation获取排列列表,然后应用指标。

import numpy as np
import itertools as it

def apply_metric(predictions, targets):
return np.sqrt(((predictions - targets) ** 2).mean())

l1 = [0, 1, 12, 33, 41, 52, 69, 7.2, 8.9, 9.91]
l2 = [45, 51]

temp_dict = {}
for elements in it.permutations(l1, len(l2)):
temp_result = apply_metric(np.array(l2), np.array(elements))
temp_dict.update({temp_result : list(elements)})

print(f"Best metric: {min(temp_dict)}")
print(f"Best list: {temp_dict[min(temp_dict)]}")

其产量:

Best metric: 2.9154759474226504
Best list: [41, 52]

关于python - 在列表的排列中应用排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59758815/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com