如果已经有人提出了类似的问题,请给出链接并关闭此线程。我不确定要搜索什么关键字。
我正在尝试将numpy数组的非零条目向固定方向移动,例如,假设我有一个2D数组:
0 1 2 0
0 3 0 0
0 0 0 0
0 0 0 0
将其向右下平移一个单位,将会产生以下数组:
0 0 0 0
0 0 1 2
0 0 3 0
0 0 0 0
假设非零条目超出界限,它们会被简单地删除。我该怎么做?
编辑:显然有一些重复的问题?移动numpy数组中的元素我真的不明白为什么它们是相同的问题,因为那个问题涉及到循环超出范围的内容,所以更像是一个“滚动”操作而不是移位。此外,我喜欢这里的解决方案,它非常简单和易读。
再次编辑:修正了一些格式。
np.roll
进行保存。 你也可以通过切片构造一个新的数组。 - Andras Deak -- Слава Україніshift=(1,1); new=np.zeros_like(old); new[shift[0]:,shift[1]:]=old[:-shift[0],:-shift[1]]
这样的代码,可能会有一些 off-by-one 的错误。 - Andras Deak -- Слава Україні