gpt4 book ai didi

python - 使用 NumPy 查找元组列表第二个元素的中位数

转载 作者:太空狗 更新时间:2023-10-30 00:40:04 26 4
gpt4 key购买 nike

假设我有一个元组列表,如下所示:

list = [(a,1), (b,3), (c,5)]

我的目标是使用元组的第二个元素获取元组列表中位数的第一个元素。在上面的例子中,我想要 b 的输出,因为中位数是 3。我尝试将 NumPy 与以下代码一起使用,但无济于事:

import numpy as np

list = [('a',1), ('b',3), ('c',5)]
np.median(list, key=lambda x:x[1])

最佳答案

你可以这样计算中位数:

np.median(dict(list).values()) 
# in Python 2.7; in Python 3.x it would be `np.median(list(dict(list_of_tuples).values()))`

首先将您的列表转换为字典,然后计算其值的中位数。

当你想得到真正的 key 时,你可以这样做:

dl = dict(list) #{'a': 1, 'b': 3, 'c': 5}

dl.keys()[dl.values().index(np.median(dl.values()))]

这将打印 'b'。假定中位数在列表中,否则将抛出 ValueError。因此,您可以使用 @Anand S Kumar 的回答中的示例,像这样使用 try/except:

import numpy as np

l = [('a',1), ('b',3), ('c',5), ('d',22),('e',11),('f',3)]

# l = [('a',1), ('b',3), ('c',5)]

dl = dict(l)
try:
print(dl.keys()[dl.values().index(np.median(dl.values()))])
except ValueError:
print('The median is not in this list. Its value is ',np.median(dl.values()))
print('The closest key is ', dl.keys()[min(dl.values(), key=lambda x:abs(x-np.median(dl.values())))])

对于第一个列表,您将获得:

The median is not in this list. Its value is 4.0

The closest key is f

对于您的示例,它只打印:

b

关于python - 使用 NumPy 查找元组列表第二个元素的中位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31836655/

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