繁体   English   中英

循环以对numpy数组中的i + 1执行操作

[英]Loop to perform operation on i+1 in numpy array

我有一个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....

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM