我有一个带有二进制值的numpy数组,我需要按以下方式更改:每个元素的值必须向左移动一列但只在同一行内。举个例子,我有以下数组:
>>> arr = np.array([[0,0,1,0],[1,0,0,0],[0,0,1,1]])
>>> arr
array([[0, 0, 1, 0],
[1, 0, 0, 0],
[0, 0, 1, 1]])
它需要转变为:
>>> arr
array([[0, 1, 0, 0],
[0, 0, 0, 1],
[0, 1, 1, 0]])
我知道np.roll(arr,-1)
会将值向左滚动一个单元格,但它似乎无法在它们所属的行中滚动它们(即单元格上的元素[1, 0]转到[0,3]而不是所需的[1,3]。有没有办法做到这一点?
提前致谢。
答案 0 :(得分:6)
roll
接受轴参数:
np.roll(arr,-1, axis=1)
array([[0, 1, 0, 0],
[0, 0, 0, 1],
[0, 1, 1, 0]])