获得不同长度的多维数组的中位数

时间:2013-12-23 22:54:46

标签: python-2.7 numpy median

鉴于我的数组

x = numpy.array([[1.0,2.0,3.0],[10.0,20.0,30.0]])

我可以使用

轻松获得每个元素的中位数
np.median(x, axis=0)

#output: array([  2.,  20.])

但是当我增加一个数组的长度时,我不能做同样的事情

x = numpy.array([[1.0,2.0,3.0],[10.0,20.0,30.0, 40.0]])

输出应该是数组([2.,25。])

有没有办法让这样的数组得到中位数?

2 个答案:

答案 0 :(得分:3)

[np.median(i) for i in x]

由于列表的长度不等,您无法广播它们。这就是为什么第一部作品,而不是第二部作品。

在第一种情况下,您的两个列表将被广播到3x2阵列,其中沿轴的中值是有意义的。现在这两个不等长的列表不能以这种方式广播。

答案 1 :(得分:0)

实际上,您没有数字数组,而是列表数组。所以中位数毫无意义。您应该迭代列表并一次计算一个中位数