繁体   English   中英

在列表中找到最接近 python 中元素平均值的元素?

[英]finding the element in a list closest to the mean of elements in python?

这是我的数组a= [5, 25, 50, 100, 250, 500] a 的平均值为 155(我使用sum(a)/len(a)计算)但我必须将 100 存储在变量中而不是 155。

有什么简单的方法可以解决这个问题。

IIUC,使用numpy.argmin通过计算与平均值的绝对差来找到最接近平均值的值的索引:

a = np.array([5, 25, 50, 100, 250, 500])

out = a[np.argmin(np.abs(a-a.mean()))]

output: 100

如果你想让它保持纯 python,你可以使用自定义键进行sorted以查找最低差异元素:

a= [5, 25, 50, 100, 250, 500]
a_mean = sum(a)/len(a)
out = sorted(a, key=lambda val:abs(val-a_mean))[0]
# 100

如果我们想用纯 python 来 go,我会这样写一个 function:

from typing import List
numb_list = [1, 4, 10, 20, 55, 102, 77, 89]


def find_closest_to_mean(num_list: List[int])->int:
    mean = sum(numb_list)/len(num_list)
    distance_list = [abs(mean - num) for num in numb_list]
    return num_list[distance_list.index(min(distance_list))]


print(find_closest_to_mean(numb_list))  

[出去]

mean = 44.75
closest number = 55

在这里,我创建了一个名为find_closest_to_mean的 function,它需要一个num_list参数,它是一个整数列表。 然后它首先计算列表的平均值,创建一个distance_list ,其中每个元素对应于num_list中的 num_list 的距离以及平均值(作为绝对值)。 最后它从 num_list 中返回一个 integer ,它与平均值的距离最小。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM