2013-12-23 46 views
0

鉴于我的数组获得不同长度的期多维数组的中位数

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])

有没有办法仍然可以得到这样一个数组的中位数?

回答

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

由于列表的长度不等,所以不能广播它们。这就是第一件作品的原因,但不是第二件作品。

在第一种情况下,您的两个列表将被广播到一个3x2阵列中,其中轴的中位数是有意义的。现在这两个不等长的名单不能这样广播。

0

其实你没有一个数组的数组,而是一个列表数组。所以中值没有意义。你应该迭代你的列表并且一次计算一个中值。