我正在处理一些tif文件,我必须根据.tif文件绘制温度和vegatation索引之间的依赖关系。这只是FYI。现在我的编程问题。
我使用的是python 2.7(x64)。
我有大的ndarray形式NumPy lib,包含temerature和第二(相同大小)植被idex的值。 mergedmask
是我的掩码(与其他数组大小相同),其中False值表示它是有效数据。
maxTS = np.amax(toa[mergedmask==False])
minTS = np.amin(toa[mergedmask==False])
maxVI = np.amax(ndvi1[mergedmask==False])
minVi = np.amin(ndvi1[mergedmask==False])
在上部变量中,我的最小值和最大值为TS
(温度)和VI
(植被指数)。一切都好。我很开心。现在我必须找到toa
和ndvi1
数组中的坐标。所以我正在使用它:
ax,ay = np.unravel_index(ndvi1[mergedmask==False].argmin(),ndvi1.shape)
为了简化我的消息,我只关注minVI
。上线返回2个索引。然后:
newMinVi = ndvi1[ax][ay]
应分配给newMinVi
与minVi
相同的值。但它并没有。我检查了ax-1, ax+1, ay-1,ay+1
附近的索引,所有这些索引都不接近我的minVi
值。你有什么想法来获得我的minVi值的协调。
答案 0 :(得分:0)
ndvi1[mergedmask==False].argmin()
将为您提供ndvi1[mergedmask==False]
中最小值的索引,即新数组的索引,对应于mergedmask
为False
的位置。< / p>
这里的问题是ndvi1[mergedmask==False]
实际上不是掩码。它选择符合条件的ndvi1
值,并将这些值组合成新的1D数组。例如,检查ndvi1[mergedmask==False].size
是什么,并将其与ndvi1.size
进行比较。
您可能想要做的是创建一个真正的蒙版数组:
ndvi1_masked = np.ma.masked_array(ndvi1, (mergedmask==False))
ax, ay = np.unravel_index(ndvi1_masked.argmin(), ndvi1.shape)
希望这有帮助!
答案 1 :(得分:0)
几乎我想要的东西。
ndvi1_masked = np.ma.masked_array(ndvi1, (mergedmask==False))
很好地掩盖但不是这个我想要的价值观。我只需要将语句改为mergedmask==False
,最后我得到了:
myNdviMasked = np.ma.masked_array(ndvi1,(mergedmask!=False))
bx, by = np.unravel_index(myNdviMasked.argmin(), myNdviMasked.shape)
感谢您的帮助:)