Я хотел бы добавить значения в строке выше в строку ниже, используя векторизацию. Например, если бы у меня был ndarray,
[[0, 0, 0, 0],
[1, 1, 1, 1],
[2, 2, 2, 2],
[3, 3, 3, 3]]
Тогда после одной итерации этого метода это привело бы к
[[0, 0, 0, 0],
[1, 1, 1, 1],
[3, 3, 3, 3],
[5, 5, 5, 5]]
Можно просто сделать это с помощью a для l oop:
import numpy as np
def addAboveRow(arr):
cpy = arr.copy()
r, c = arr.shape
for i in range(1, r):
for j in range(c):
cpy[i][j] += arr[i - 1][j]
return cpy
ndarr = np.array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3]).reshape(4, 4)
print(addAboveRow(ndarr))
Я не уверен, как подойти к этому, используя векторизацию. Я думаю, что слайсеры должны быть использованы? Кроме того, я не совсем уверен, как бороться с проблемой верхней границы, потому что ничего не должно быть добавлено в первый ряд. Любая помощь будет оценена. Спасибо!
Примечание: я действительно новичок в векторизации, поэтому объяснение было бы здорово!