我正在阅读NDarray part上的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)
我想知道的是,当参数axis
的值为1
时,我认为它应该输出
array([ 2., 2., 2.], dtype=float32)
但不是
array([ 3., 3.], dtype=float32)
当参数axis
的值为1
时,我认为sum_axis
应计算列中的总和,但结果显示它计算沿行的总和。< / p>
似乎numpy
也是这样计算的,我真的不明白为什么会这样。
所以任何人都可以解释一下吗?
谢谢!
答案 0 :(得分:1)
Numpy描述了2D数组中的轴。二维数组有两个相应的轴:第一个在行(轴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。]