[英]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 != 0
则max(list)
将不在此列表中
使用np.percentile
和np.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.