我有一个2dnumpy数组,我想以增量方式滚动每一行。我在for
循环中使用np.roll
来执行此操作。但是由于我调用这个函数上千次,我的代码非常慢。你能帮我讲讲如何使它更快吗。在
我的输入看起来像
array([[4,1],
[0,2]])
我的输出看起来像
^{pr2}$这里第零行[4,1]
被移动了0,第一行[0,2]
被移动了1。同样,第二行将被移位2,以此类推。在
编辑
temp = np.zeros([dd,dd])
for i in range(min(t + 1, dd)):
temp[i,:] = np.roll(y[i,:], i, axis=0)
这里有一个矢量化的解决方案-
样本输入,输出-
^{pr2}$因为,您已经提到要多次调用这样一个滚动例程,请创建一次索引数组
idx
,稍后再使用它。在进一步改进
对于重复使用,最好先创建完整的线性索引,然后使用
np.take
来提取滚动元素,如下-让我们看看有什么改进-
关于
3x
的改进!在一个棘手但快速的解决方案:
相关问题 更多 >
编程相关推荐