详解Python如何获取列表(List)的中位数

作者:daisy 时间:2022-02-01 02:35:37 

前言

中位数是一个可将数值集合划分为相等的上下两部分的一个数值。如果列表数据的个数是奇数,则列表中间那个数据就是列表数据的中位数;如果列表数据的个数是偶数,则列表中间那2个数据的算术平均值就是列表数据的中位数。在这个任务里,你将得到一个含有自然数的非空数组(X)。你必须把它分成上下两部分,找到中位数。

输入: 一个作为数组的整数(int)列表(list)的。

输出: 数组的中位数(int, float). 

示例


get_median([1, 2, 3, 4, 5]) == 3
get_median([3, 1, 2, 5, 3]) == 3
get_median([1, 300, 2, 200, 1]) == 2
get_median([3, 6, 20, 99, 10, 15]) == 12.5
 

如何使用: 中位数在概率论和统计学中得到应用,它偏态分布中有显著的价值。例如:我们想从一组数据中知道人们的平均财富 -- 100人一个月收入100美元,10人一个月收入1,000,000美元。如果我们算平均值,得到的是91000美元。这是一个完全没有向我们展示真实情况的奇怪的值。所以在这种情况下,中位数会给我们更有用的值和较好的描述。


前提: 1 < len(data) ≤ 1000 all(0 ≤ x < 10 ** 6 for x in data)


普通方法:


对列表进行排序,针对列表长度是奇数还是偶数的不同情况,计算中位数。




def get_median(data):
  data = sorted(data)
  size = len(data)
  if size % 2 == 0: # 判断列表长度为偶数
   median = (data[size//2]+data[size//2-1])/2
   data[0] = median
  if size % 2 == 1: # 判断列表长度为奇数
   median = data[(size-1)//2]
   data[0] = median
  return data[0]

最佳方法:

这个解决方法非常巧妙,它利用了取反数和为1的特性,通过列表负索引来获得列表中位数。

return (data[half] + data[~half]) / 2 的解释:

详解Python如何获取列表(List)的中位数

排序后得到序列[1,2,3,4,5,6],其列表长度为偶数,中位数由列表中间两位元素3(索引为2),4(索引为3)决定。而元素4的负索引为-3,正好是索引2的取反数。

排序后得到序列[1,2,3,4,5],其列表长度为奇数,中位数由列表中间元素3(索引为2,负索引为-3)决定。仍然符合代码。 


  def get_median(data):
  data.sort()
  half = len(data) // 2
  return (data[half] + data[~half]) / 2

总结

标签:python,中位数
0
投稿

猜你喜欢

  • 关于配置babel-plugin-import报错的坑及解决

    2023-07-02 16:39:01
  • MYSQL 一个巧用字符函数做数据筛选的题

    2024-01-26 01:39:05
  • 获得当前数据库对象依赖关系的实用算法

    2009-01-08 13:28:00
  • PHP三层结构(上) 简单三层结构

    2023-06-20 06:36:07
  • Python二次规划和线性规划使用实例

    2023-08-28 05:37:10
  • linux系统使用python获取cpu信息脚本分享

    2021-10-18 17:45:30
  • python paramiko利用sftp上传目录到远程的实例

    2023-08-10 02:53:23
  • python实现查找两个字符串中相同字符并输出的方法

    2023-09-01 04:03:42
  • python使用递归的方式建立二叉树

    2021-07-07 23:47:18
  • python 通过SSHTunnelForwarder隧道连接redis的方法

    2021-03-08 12:58:41
  • 同时安装sql2000和sql2005,经验点滴

    2008-03-04 17:56:00
  • SQL Server数据库对服务器的需求

    2010-06-11 13:52:00
  • 基于Django的ModelForm组件(详解)

    2022-03-07 18:21:04
  • Python常用的文件及文件路径、目录操作方法汇总介绍

    2022-03-21 00:00:25
  • 从品牌网站看交互设计

    2009-08-18 12:39:00
  • 为什么我们需要在SQL Server里更新锁

    2024-01-16 01:37:39
  • Yii2中的场景(scenario)和验证规则(rule)详解

    2024-04-28 09:43:50
  • Python实现基本数据结构中栈的操作示例

    2021-09-04 10:29:23
  • python中二维阵列的变换实例

    2021-06-28 07:54:06
  • php中fgetcsv()函数用法实例

    2023-06-15 05:50:37
  • asp之家 网络编程 m.aspxhome.com