关于python循环加速的疑惑

问题遇到的现象和发生背景

用python做arnold置乱算法时,发现for循环做出来的运行时间不够好,时间达到了1秒多。本想通过numpy来提提速,但不知道如何下手。
arnold算法中主要是用原图片的像素坐标做一个映射变换来获得新的坐标,将像素值填入新坐标中。

问题相关代码,请勿粘贴截图
def arnold(img,a,b):
    r, c = img.shape
    p = np.zeros((r, c), np.uint8)
    p[x, y] = img[0:r, 0:c]
    for i in range(r):
        for j in range(c):
            x = (i + j) % r
            y = (i + 2 * j) % c
            p[x, y] = img[i, j]
    return p
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

希望运行时间能到0.3秒以下

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。