【问题标题】:How can I sum an interval of elements on an array in python / numpy?python - 如何在python / numpy中对数组上的元素间隔求和?
【发布时间】:2012-04-05 13:35:09
【问题描述】:

如何在 python / numpy 中对数组上的元素区间求和?

例如,在 matlab 中可能是这样的:

y= ones(10,20);
y(1:5,:) = 2;
for k = 1: 10
   psum(k) = sum(y((1:3),k));
end

但是 numpy 的 sum 函数不支持 "1:3"

谢谢!

【问题讨论】:

    标签: python arrays matlab numpy sum


    【解决方案1】:

    大概是这样的:

    y = numpy.ones((10, 20))
    y[0:5] = 2
    psum = y[0:3].sum(axis=0)
    

    一个更简单的例子:

    y = numpy.array([2, 6, 7, 3, 4])
    print y[1:4].sum()
    

    打印16,中间三个元素的总和。

    【讨论】:

    • 不完全是; Matlab 程序返回所有的六(至少在 Octave 中)。
    • @larsmans:那么,Matlab 和 NumPy 中的索引顺序有些不同。我添加了一个更简单的示例来说明如何对数组切片求和。
    • @Bago:我想通了,但我以不同的方式搞砸了,与 Matlab 和 NumPy 之间的差异无关。现在应该基本修复了。
    【解决方案2】:

    这应该可以解决问题:

    >>> y = np.ones((10, 20))
    >>> y[0:5, :] = 2
    >>> psum = y[0:3, 0:10].sum(axis=0)
    

    请注意,在 Python 中,索引从零开始,结束索引不包含在内。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-09
      • 1970-01-01
      • 2015-08-15
      • 2014-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多