numpy沿单轴滚动

时间:2018-03-19 14:07:45

标签: 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]])

它需要转变为:

>>> arr
array([[0, 1, 0, 0],
       [0, 0, 0, 1],
       [0, 1, 1, 0]])

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

提前致谢。

1 个答案:

答案 0 :(得分:6)

roll接受轴参数:

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

array([[0, 1, 0, 0],
       [0, 0, 0, 1],
       [0, 1, 1, 0]])