Python行/列混淆

时间:2015-11-26 08:20:18

标签: python arrays numpy

>>> 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。

1 个答案:

答案 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])