检索最小值和最大值np.ndarray公司

2024-05-05 23:53:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在处理一些tif文件,我必须根据.tif文件绘制温度和植被指数之间的依赖关系。只是为了给我参考。现在我的编程问题。 我使用的是python2.7(x64)。 我有大ndarray形式的NumPy lib,包含温度值和第二个(相同大小)的植被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(植被指数)。一切都好。我很高兴。现在我要在toandvi1数组中找到坐标。所以我用这个:

^{pr2}$

为了简化我的消息,我只关注minVI。上线返回2个索引。然后:

newMinVi = ndvi1[ax][ay]

应为newMinVi分配与minVi相同的值。但不是这样,我检查了类似ax-1, ax+1, ay-1,ay+1之类的索引,它们甚至都不接近我的minVi值。你有什么办法来协调我的明维价值吗。在


Tags: 文件falsenp数组ax温度tiftoa
2条回答

ndvi1[mergedmask==False].argmin()将为您提供ndvi1[mergedmask==False]中最小值的索引,即新数组中的索引,对应于mergedmask是{}的位置。在

这里的问题是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)

希望这有帮助!在

几乎是我想要的。在

ndvi1_masked = np.ma.masked_array(ndvi1, (mergedmask==False))

伪装得很好,但这不是我想要的。我只需将语句改为mergedmask==False,最后得到:

^{pr2}$

感谢您的帮助:)

相关问题 更多 >