numpy沿单轴滚动

Dst*_*to4 1 python arrays numpy

我有一个带有二进制值的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]])
Run Code Online (Sandbox Code Playgroud)

它需要转变为:

>>> arr
array([[0, 1, 0, 0],
       [0, 0, 0, 1],
       [0, 1, 1, 0]])
Run Code Online (Sandbox Code Playgroud)

我知道np.roll(arr,-1)将值向左滚动一个单元格,但它似乎无法在它们所属的行中滚动它们(即单元格[1,0]上的元素转到[0,3]而不是期望的[1,3].有没有办法做到这一点?

提前致谢.

cs9*_*s95 6

roll 接受轴参数:

np.roll(arr,-1, axis=1)

array([[0, 1, 0, 0],
       [0, 0, 0, 1],
       [0, 1, 1, 0]])
Run Code Online (Sandbox Code Playgroud)