蟒蛇中位数为5分

时间:2016-10-11 00:53:10

标签: python numpy indexing median

我的数据框(df)有一个数字列表(共1773个),我试图找到五个数字的中位数(例如median of 3rd number = median (1st,2nd,3rd,4th,5th)

num
10
20
15
34
...
...
...

def median(a, b, c,d,e):
    I=[a,b,c,d,e]
    return I[2]



num_median = [num[0]]

for i in range(1, len(num)):
    num_median = median(num[i - 1], num[i-2], num[i],num[i+1],num[i+2])

df['num_median']=num_median


IndexError: index 1773 is out of bounds for axis 0 with size 1773

哪里出错了,还有其他方法来计算中位数吗?

1 个答案:

答案 0 :(得分:1)

一个有用的例子:

a = [0, 1, 2, 3]
print('Length={}'.format(len(a)))
print(a(4))

你正在尝试同样的事情。元素的实际索引比它的位置低一个。请注意,您的异常会显示完全您的问题所在。

您需要修改:

for i in range(1, len(num) - 2):
    num_median = median(num[i - 1], num[i-2], num[i],num[i+1],num[i+2])

这样你的最后一次索引检查就不会太大。否则,当你在数组的末尾(index = 1773)时,你将尝试访问一个不存在的索引(1773 + 2)。