1

接下来的代码是matlab代码。我想将此代码转换为 python 代码以便在 Arcgis 中使用它。

vals = zeros(size(a(:,:,1)));
 [~,indexOfMax] = max(a,[],3);
 for i=1:size(a,1)
    for j=1:size(a,2)
        vals(i,j) = b(i,j, indexOfMax(i,j));
    end 
 end

我将简要解释一下这段代码。我有两个图像(名为 A 和 B)。两者都有 7 层在同一维度 (4169,6289,7)。首先,我想在 A 图像中找到最大值的位置,然后在上一步从 A 图像中提取的最大值位置获取 B 图像的值。

非常感谢

4

1 回答 1

2
vals = numpy.zeros((a.shape[0], a.shape[1]))
indexOfMax = numpy.argmax(a,2)
for i in range(a.shape[0]):
  for j in range(a.shape[1]):
    vals[i,j] = b[i,j, indexOfMax[i,j]]

也应该可以向量化而不是使用for循环。

小心,在 Python 中缩进很重要!在第二个for循环之前和vals之前保留缩进。

于 2012-12-30T15:14:24.770 回答