У меня есть матрица (2d Numpy ndarray, чтобы быть точным):Ролл строки матрицы независимо друг от друга
A = np.array([[4, 0, 0],
[1, 2, 3],
[0, 0, 5]])
И я хочу свернуть каждую строку A
независимо друг от друга, в соответствии со значениями валков в другой массив:
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]]
есть ли способ сделать это эффективно? Возможно, используя причудливые индексирующие трюки?
Вид Интересно, что ' np.roll' не принимает массив numpy в качестве входных данных. – Daniel