У меня есть матрица (2d numpy ndarray, если быть точным):
A = np.array([[4, 0, 0],
[1, 2, 3],
[0, 0, 5]])
И я хочу катить каждую строку A
независимо, в соответствии с значениями roll в другом массиве:
r = np.array([2, 0, -1])
То есть, я хочу сделать это:
print np.array([np.roll(row, x) for row,x in zip(A, r)])
[[0 0 4]
[1 2 3]
[0 5 0]]
Есть ли способ сделать это эффективно? Возможно, используя причудливые индексирующие трюки?