枚举 two-dimensional 数组的区域并与它们交互

Enumerating regions of a two-dimensional array and interacting with them

我有两个 two-dimensional 大小为 1501x780 的数组 res1、res2。 我必须从它们中取出切片,用函数处理这些切片并将结果添加到数组中。 res1 上的切片从 (0,0) 开始,一直到 (100,100)。 (尺寸100x100)固定不动。

res2 数组的第二个切片也从 (0,0) 开始并在 (100,100) 结束。 我们得到2个切片并使用一定的公式计算出该值,并将该值添加到结果数组中。

然后,使用固定的res1切片,我们将res2的值更改为(0,1),(100,101)。也就是说,我们将切片向右移动一个像素,使其保持在相同的高度。我们做所有相同的操作。然后我们再次向右移动(0,2),(100,102)。等等 100 个元素。也就是说,最多 (0,100)(100,200)。 然后我们将它向下移动一个像素,(1.0)(0.100)。 而且我们还 运行 从 (1,0...100)(1,0...200) 移动 (2,0),(2,100) 以此类推,直到 (100,100),(200,200)。 res1 的切片在这一切中保持不变。 结果,应获得结果 two-dimensional 元素数组 ...

非常感谢 Robin De Schepper 的帮助,我知道如何与切片交互,但我没有这样描述我的任务。而且,如果您将第二个循环 for j in range(100) 添加到其函数中,那么我看不出如何 运行 通过我需要的切片值,以及如何将计算结果输入到一个 two-dimensional 数组,因为声明在结果之前 = [[]] 并没有像我想象的那样工作。

出于某种原因,当我描述我的问题并并行思考时,我得出的结论是这是不可能实现的。

要通过对输入数组 res1res2(size_x, size_y) 切片执行 operation 来获得结果的 (x, y) 矩阵,您可以使用嵌套 for 循环和 numpy:

import numpy as np

def operation(a, b):
  return a + b

res1 = np.array(res1)
res2 = np.array(res2)
x = 100
y = 100
size_x = 100
size_y = 100
start_x = 0
start_y = 0
results = np.empty((x, y))
for i in range(x):
 for j in range(y):
  slice1 = res1[(start_x + i):(start_x + i + size_x), (start_y + j):(start_y + j + size_y)]
  slice2 = res2[(start_x + i):(start_x + i + size_x), (start_y + j):(start_y + j + size_y)]
  results[i, j] = operation(slice1, slice2)

可能有更聪明的 numpy 方法