簡體   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