Python行/列混淆

use*_*532 2 python arrays numpy

>>> b = np.array([[1,2,3], [4,5,6], [7,8,9]])
>>> b[0,2]
3
Run Code Online (Sandbox Code Playgroud)

从这段代码中可以清楚地看到,您传递的第一个列表([1,2,3])成为第一个ROW,而不是2D数组的第一个COLUMN.

>>> np.apply_along_axis(sum, 0, b)
array([12, 15, 18])
Run Code Online (Sandbox Code Playgroud)

为什么这不给我阵列([6,15,24])?我将0设置为轴,这意味着行.第一行的总和是6,而不是12.

Ant*_*pov 6

来自docs:

轴是为具有多个维度的数组定义的.二维阵列具有两个相应的轴:第一个在行(轴0)上垂直向下运行,第二个轴在列(轴1)上水平运行.

因此,如果要在第一行求和,它将跨列,您需要将轴更改为1:

In [194]: np.apply_along_axis(sum, 1, b)
Out[194]: array([ 6, 15, 24])
Run Code Online (Sandbox Code Playgroud)

或者你可以用numpy数组的sum方法来做:

In [198]: b.sum(axis=1)
Out[198]: array([ 6, 15, 24])
Run Code Online (Sandbox Code Playgroud)