【发布时间】:2019-10-28 07:08:24
【问题描述】:
我不确定要搜索什么关键字,所以如果已经询问过,请链接响应并关闭此线程。
我正在尝试将 numpy 数组的非零条目按固定方向移动,例如,假设我有一个二维数组:
0 1 2 0
0 3 0 0
0 0 0 0
0 0 0 0
将其移动 (1,1) 将产生以下数组:
0 0 0 0
0 0 1 2
0 0 3 0
0 0 0 0
假设如果非零条目超出范围,它们就会被丢弃。我该怎么做?
编辑:显然有些重复? Shift elements in a numpy array 我真的不明白为什么它们根本是同一个问题,因为那个人谈论的是使事物不受约束地循环,因此它更像是一种“滚动”动作而不是转移。我也喜欢这里的解决方案,它非常简单易读。
再次编辑:修复了一些格式
【问题讨论】:
-
保存您可能正在寻找的边缘行为
np.roll。您也可以从切片构造一个新数组。 -
请将您的值编辑为 1,2,3 而不是 2,2,2,这样我们就可以看到您想要什么样的转变,现在可以有很多不同的东西
-
shift=(1,1); new=np.zeros_like(old); new[shift[0]:,shift[1]:]=old[:-shift[0],:-shift[1]]之类的东西会出现一些错误。