[英]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.