【问题标题】:Confusing documentation about axes in SciPy关于 SciPy 中轴的令人困惑的文档
【发布时间】:2016-11-11 03:43:54
【问题描述】:

以下是 SciPy documentation 的摘录(截至 2016 年 7 月 8 日):

沿轴

轴是为一维以上的数组定义的。一个二维数组有两个对应的轴:第一个垂直向下穿过行(轴 0),第二个垂直向下穿过列(轴 1)。

许多操作可以沿这些轴之一进行。例如,我们可以对数组的每一行求和,在这种情况下,我们沿列或轴 1 操作:

>>> x = np.arange(12).reshape((3,4))    
>>> x
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

>>> x.sum(axis=1)
array([ 6, 22, 38])

我认为这是一个错误,因为它们不是对所有行求和,而是对所有列求和,因此它们使用axis = 1,因为它们遍历所有列(即沿轴 1 水平移动)并添加他们起来。

所以,我的问题是:这是文档中的错误还是我不明白轴在 SciPy 中的工作原理?

【问题讨论】:

    标签: python arrays numpy


    【解决方案1】:

    考虑这个例子。

    >>> print(a)
    [[ 0  1  2]
     [ 3  4  5]
     [ 6  7  8]
     [ 9 10 11]]
    

    对列求和:

    >>> a.sum(axis=0)
    array([18, 22, 26])
    

    或者,对行求和:

    >>> a.sum(axis=1)
    array([ 3, 12, 21, 30])
    

    我希望这能消除你的疑虑。

    【讨论】:

    • 现在我明白了:当他们说 对每一行求和时,它们实际上是指每一行的行中所有元素的总和,而不是对所有行求和(这就是我最初解释该短语)。所以基本上他们正在添加给定矩阵的列,并且它们确实沿着水平轴或沿着列移动,这就是他们使用axis = 1的原因。
    猜你喜欢
    • 2020-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-29
    • 2017-05-30
    • 1970-01-01
    • 2018-10-26
    • 1970-01-01
    相关资源
    最近更新 更多