numpy沿单轴滚动

问题描述 投票:1回答:1

我有一个带有二进制值的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]。有没有办法做到这一点?

提前致谢。

python arrays numpy
1个回答
6
投票

roll接受一个轴参数:

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

array([[0, 1, 0, 0],
       [0, 0, 0, 1],
       [0, 1, 1, 0]])
© www.soinside.com 2019 - 2024. All rights reserved.