1

Next code is matlab code. I want to convert this code into python code in order to use it in 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

このコードを簡単に説明します。2 つの画像 (A と B という名前) があります。どちらも同じ次元 (4169,6289,7) に 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 ではインデントが重要です! 2 番目の forループの前とvalsの前にインデントを保持します。

于 2012-12-30T15:14:24.770 に答える