簡體   English   中英

如何從數字列表中獲得平均“差價”?

[英]How to get an average 'spread' from a list of numbers?

讓我們說我有一個數字列表:

some_numbers = [16.0,  16.01,  24.53,  22.99,  22.72,  22.71,  22.2,  21.36,  21.34,  
21.0,  22.67,  22.62,  15.89,  23.54,  27.0,  21.35,  26.99,  25.46,  22.54,  22.53,  
17.99,  22.13,  17.97,  17.96,  17.95,  22.4,  22.32,  22.25,  22.19,  22.16,  
20.68,  21.74,  15.38,  11.13,  15.82,  22.33,  22.31,  22.23,  22.15,  22.12,  
22.11,  22.07,  18.99,  18.94,  18.86,  18.85,  18.82,  18.81,  16.79,  15.98,  
15.96,  15.94,  15.9,  15.86,  15.85,  15.83,  11.47,  11.46,  11.36,  11.34,  
11.32,  11.28,  11.26,  11.25,  11.21,  11.19,  11.18,  9.99]

但是這個列表包含了太多的數據,我想傳達這種傳播。 我想打印其中10個數字。 如果1是最高數字而10是最低數字,我怎么能對列表進行排序並打印10個數字的范圍來表示從最高到最低的差價?

可以說列表是[1,2,3,4,5,6,7,8,9,10,11,12,13] ,我希望在該范圍內傳播四個數字,傳播將是[1,5,9,13]

試試這個:

sorted(list)[::len(list)/9]

輸出:

[6.34, 11.19, 13.61, 14.56, 15.92, 16.91, 17.97, 19.65, 20.87, 26.81]

編輯:

如果len(list) % 9 != 0max(list)將不在此列表中

使用np.percentilenp.linspace

import numpy as np

np.percentile(l, np.linspace(100, 0, 10), interpolation='nearest')
# array([27.  , 21.02, 19.7 , 17.99, 16.93, 15.94, 14.57, 13.77, 11.19,
        6.34])

邏輯:

具有interpolation='nearest' np.percentile返回給定數組的最近q -th元素。

np.linspace創建從0和100(包括0和100)的等間距10個元素,以便產生第q個百分位數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM