Skip to main content
 首页 » 编程设计

python之numpy 沿单轴滚动

2025年05月04日14bjzhanghao

我有一个带有二进制值的 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]])