我有一个带有二进制值的 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]。有没有办法做到这一点?
提前致谢。
请您参考如下方法:
roll 接受一个轴参数:
np.roll(arr,-1, axis=1)
array([[0, 1, 0, 0],
[0, 0, 0, 1],
[0, 1, 1, 0]])
