【问题标题】:Loop to perform operation on i+1 in numpy array循环对 numpy 数组中的 i+1 执行操作
【发布时间】:2018-11-08 00:45:42
【问题描述】:

我有一个 numpy 数组,我想取每行中的 3 个数字,从下一行减去它们并将这些值存储在另一个数组中。

类似

for i in array:
    a = i - i+1

我知道这是非常错误的,但至少这给出了我想要的想法。

显然 i+1 只会导致值 + 1,然后我所拥有的只是 a = 1,1,1

当我说 i+1 时,我指的是下一个。

例如:

input = np.array([[4,4,5], [2,3,1],[1,2,0]])
output =  np.array([2,1,4],[1,1,1]) etc....

在数千行上迭代执行此操作的最佳方法是什么?

【问题讨论】:

    标签: arrays loops numpy iteration


    【解决方案1】:

    IIUC,而不是循环,您可以使用 np.roll 将数组 1 向上移动,从原始输入中减去它,然后取除最后一个以外的所有结果数组(因为从最后一个数组中没有什么可以减去):

    >>> inp = np.array([[4,4,5], [2,3,1],[1,2,0]])
    >>> inp
    array([[4, 4, 5],
           [2, 3, 1],
           [1, 2, 0]])
    >>> (inp - np.roll(inp,-1,axis=0))[:-1]
    array([[2, 1, 4],
           [1, 1, 1]])
    

    或者,更直接的方法是使用numpy 索引:

    >>> inp[:-1] - inp[1:]
    array([[2, 1, 4],
           [1, 1, 1]])
    

    【讨论】:

    • 谢谢你,这正是我所需要的。
    猜你喜欢
    • 2012-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 2016-06-30
    • 2014-03-11
    • 1970-01-01
    相关资源
    最近更新 更多