2013-12-23 48 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

其實你沒有一個數組的數組,而是一個列表數組。所以中值沒有意義。你應該迭代你的列表並且一次計算一箇中值。