+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2019-07(8)

2019-08(108)

2019-09(104)

2019-10(11)

2019-11(5)

python中获取中位数的两种方法

发布于2020-09-30 06:43     阅读(782)     评论(0)     点赞(2)     收藏(4)


0

1

2

3

4

5

6

7

8

普通方法:

对列表进行排序,然后根据长度为奇数或者偶数的不同情况计算中位数

def huahua(x):
    length = len(x)
    print(length)
    x.sort()
    print(x)
    if (length % 2)== 1:
        z=length // 2
        y = x[z]
    else:
        y = (x[length//2]+x[length//2-1])/2
    return y


l = [1,2,3,7,5,6,4,9,8,10]
print(huahua(l))

最佳方法:

采用取反的方式来求中位数,排序后结果为l=[1,2,3,4,5,6,7,8,9,10],长度为10,half=10//2=5,x[5]为列表的第六位数,5的取反数为-6,x[-6]实际上是对列表进行反向查找,为列表中的第五位数,长度为偶数10时中值5+6/2=5.5。

当结果为l=[1,2,3,4,5,6,7,8,9]时,长度为9,half=9//2=4,x[4]为列表的第五位数,4取反为-5,x[-5]在列表中是正向反向查找中的第五位数,所以x[4]==x[-5],中位数就为x[4]或者x[-5]。

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


l = [1,2,3,7,5,6,4,9,8,10]
if __name__ == '__main__':
    print(median(l))

原文链接:https://www.cnblogs.com/xxpythonxx/p/13741976.html

0

1

2

3

4

5

6



所属网站分类: 技术文章 > 博客

作者:玛利亚

链接: https://www.pythonheidong.com/blog/article/554172/cd912a79c1b9c37ea98c/

来源: python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

2 0
收藏该文
已收藏

评论内容:(最多支持255个字符)