0 から 255 までの値を含む 2 つの配列を使用して計算を行いたいと考えています。ゼロで除算できないため、次のコードを使用してこの問題を回避しました。
#creation of the two arrays by reading pixel values of an image
data2 = band2.ReadAsArray(0,0,cols,rows)
data3 = band3.ReadAsArray(0,0,cols,rows)
#create array to mark all zero values
mask = numpy.greater((data2+data3), 0)
#do calculation with all values >0 or else assign them -99
ndvi = numpy.choose(mask,(-99, (data3-data2)/(data2 + data3)))
ただし、まだエラーが表示されます: RuntimeWarning: ゼロによる除算が除算で発生しました。私の間違いはどこですか? それでもゼロで割りたくないはずですよね?
最後の行をこれに変更すると機能しますが、データが正確ではなくなりました。
ndvi = numpy.choose(mask,(-99, (data3-data2)/(data2 + data3 + 1)))