>>> b = np.array([[1,2,3], [4,5,6], [7,8,9]])
>>> b[0,2]
3
从这段代码可以清楚地看到,你传递的第一个列表([1,2,3])成为第一个ROW而不是2D数组的第一个COLUMN。
>>> np.apply_along_axis(sum, 0, b)
array([12, 15, 18])
为什么这不给我阵列([6,15,24])?我将0设置为轴,这意味着行。第一行的总和是6,而不是12。
答案 0 :(得分:6)
来自docs:
为具有多个维度的数组定义轴。二维数组有两个相应的轴:第一个在行(轴0)上垂直向下运行,第二个轴在列(轴1)上水平运行。
因此,如果您想在第一行求和,那么它将跨越列,您需要将轴更改为1:
In [194]: np.apply_along_axis(sum, 1, b)
Out[194]: array([ 6, 15, 24])
或者你可以用numpy数组的sum方法来做:
In [198]: b.sum(axis=1)
Out[198]: array([ 6, 15, 24])