2017-06-04 24 views
0

我讀了mxnet教程NDarray part和我感到困惑的使用sum_axis功能和例子是:弄不清mxnet sum_axis教程

>>> a = mx.nd.ones((2,3)) 
>>> c = mx.nd.sum_axis(a, axis=1) 
>>> c.asnumpy() 
    array([ 3., 3.], dtype=float32) 
>>> c = mx.nd.sum_axis(a, axis=0) 
>>> c.asnumpy() 
    array([ 2., 2., 2.], dtype=float32) 

什麼我不知道是當值放慢參數axis1,我認爲它應該輸出

array([ 2., 2., 2.], dtype=float32) 

但不

array([ 3., 3.], dtype=float32) 

當參數axis的值爲1時,我認爲sum_axis應該計算沿列的總和,但結果顯示它計算沿行的總和。

而且似乎numpy也計算這樣,我真的不明白爲什麼這樣。 所以任何人都可以解釋這一點?

謝謝!

回答

1

Numpy已經描述了二維數組中的軸。一個二維數組有兩個對應的軸:第一個垂直向下橫跨行(軸0),第二個橫向在列(軸1)上水平運行。

檢查鏈接例如 https://docs.scipy.org/doc/numpy-1.12.0/glossary.html 這對MXNet也是如此。因此,在上面提到的示例中: a = [[1.,1.,1.], [1.,1.,1.]]

軸0表示垂直向下。所以,它會給你輸出[2,2,2],軸1意味着水平地跨過列。所以,它會給你輸出[3.,3.]

+0

謝謝!這就是我想要的。但是我仍然有一個問題,如果有超過2個軸的話。 – ningyuwhut

+0

我認爲這個視覺表示和切片示例將幫助您更詳細地瞭解它。 https://stackoverflow.com/questions/40857930/how-does-numpy-sum-with-axis-work –