如何翻译/移动 numpy 数组?

Eva*_* Pu 3 python arrays numpy

我不确定要搜索什么关键字,因此如果已被询问,请链接响应并关闭此线程。

我试图按固定方向移动 numpy 数组的非零条目,例如,假设我有一个二维数组:

0 1 2 0
0 3 0 0
0 0 0 0
0 0 0 0
Run Code Online (Sandbox Code Playgroud)

将其移位 (1,1) 将产生以下数组:

0 0 0 0
0 0 1 2
0 0 3 0
0 0 0 0
Run Code Online (Sandbox Code Playgroud)

假设如果非零条目超出范围,它们就会被丢弃。我该怎么做?

编辑:显然有一些重复?在 numpy 数组中移动元素 我真的不明白为什么它们是同一个问题,因为有人谈论的是循环出界的东西,所以它更多的是一种“滚动”动作而不是移动。我也喜欢这里的解决方案,它非常简单且可读。

再次编辑:修复了一些格式

Adr*_*vao 6

使用rollnumpy 中的方法。

>>> import numpy as np
>>> m
array([[0, 1, 2, 0],
       [0, 3, 0, 0],
       [0, 0, 0, 0],
       [0, 0, 0, 0]])
>>> m = np.roll(m, 1, axis=0) # shift 1 place in horizontal axis
>>> m = np.roll(m, 1, axis=1) # shift 1 place in vertical axis
>>> m
array([[0, 0, 0, 0],
       [0, 0, 1, 2],
       [0, 0, 3, 0],
       [0, 0, 0, 0]])
Run Code Online (Sandbox Code Playgroud)

https://docs.scipy.org/doc/numpy-1.13.0/reference/ generated/numpy.roll.html