瑞安3980 发表于 2015-01-08 10:23

Python求中位数

[,
,
,
,
]这组列表怎么求内置列表每列的中位数,注意是求1,5,9,13,17和2,6,10,14,18等列的中位数,怎么求其中位数?

gxyzwangyi 发表于 2015-01-08 23:41

本人新手,随手写了一段不那么pythonic的代码,不过结果应该是对的
a=[,,,,]
b=[[] for i in range(len(a))]
for i in range(len(a)):
    for j in range(len(a)):
      b.append(a)
for i in range(len(b)):
    b=sorted(b))/2)]

icymirror 发表于 2015-01-09 09:06

回复 1# 瑞安3980
给写了段code,你以后可以只更换传入的函数来对于list in list的数值的计算了。
比如:你自己再写个stdev等等。# do not apply to empty list, it will result exception
mean = lambda x: sum(x) * 1.0 / len(x)
median = lambda x: sorted(x) if len(x) % 2 == 1 else (sorted(x) + sorted(x)) / 2.0

def MatrixCalc(data, function, byRow=True):
    """
    """
    if byRow: # By Column
      return map(function, data)
    else: # By Column
      return map(function, map(list, zip(*data)))

def main():
    data = [, , ]
    print MatrixCalc(data, mean, True)
    print MatrixCalc(data, median, True)
    print MatrixCalc(data, mean, False)
    print MatrixCalc(data, median, False)

if __name__ == "__main__":
    main()

inpool 发表于 2015-01-09 11:33

本帖最后由 inpool 于 2015-01-09 11:34 编辑

a=[,,,,]

def zhong(list_):
    result = []
    for i in zip(*list_):
      nums = sorted(i)
      length = len(x)/2
      if len(x) % 2 == 0:
            result.append(sum(nums) / 2.0)
      else:
            result.append(nums)
    return result

print zhong(a)

tianzhizhengdao 发表于 2015-01-17 00:22

本帖最后由 tianzhizhengdao 于 2015-01-17 00:58 编辑

import numpy as np

a = [,,,,]
b =

# Decent way to flat list
# import itertools
# b = list(itertools.chain.from_iterable(a))

# Simplest way
# b = sum(a, [])

median = ) for i in range(4)]
页: [1]
查看完整版本: Python求中位数