I have a 3x56075 numpy array, I'd like to take the 3 numbers in each row, minus them from the next row and store those values in another array.
for i in array: a = i - i+1
I know this is very wrong, but at least this gives the idea of what I want.
Obviously i+1 will just result in the value + 1 and then all I have is a = 1,1,1
When I say i+1 I mean the next in line.
So for example:
input = np.array([[4,4,5], [2,3,1],[1,2,0]]) output = np.array([2,1,4],[1,1,1]) etc....
What would be the best way to do this iteratively on thousands of rows?
IIUC, instead of looping, you can just shift your arrays 1 up using
np.roll, subtract that from your original input, and take all the resulting arrays except the last (because there will be nothing to subtract from the last array):
>>> 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]])