Python求中位数
[,,
,
,
]这组列表怎么求内置列表每列的中位数,注意是求1,5,9,13,17和2,6,10,14,18等列的中位数,怎么求其中位数? 本人新手,随手写了一段不那么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)]
回复 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: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: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]