Masked Array-计算特定间隔中的值



我对屏蔽阵列和卫星数据很陌生。我正试图弄清楚如何计算masked_array中介于间隔(例如40到80(之间的元素的数量。这就是我所拥有的:

这是我的掩码数组"grid"的摘要。

masked_array(
data=[[[120, 120, 120, ..., 200, 200, 200],
[120, 120, 120, ..., 200, 200, 200],
[120, 120, 120, ..., 200, 200, 200],
...,
[120, 120, 120, ..., 200, 200, 200],
[120, 120, 120, ..., 200, 200, 200],
[120, 120, 120, ..., 200, 200, 200]]],
mask=False,
fill_value=999999,
dtype=uint8)

我想计算masked_array中介于40和80之间的元素的百分比。我试过了。

masked  = ma.masked_where((grid >= 40) & (grid <= 80), grid)
green_ratio = masked.count()/grid.count()

但这是返回1,这是非常不可能的,因为我看到有大于120的值。

你知道怎么做吗?

masked.count()仍然为您提供未经过滤的值总数,当然它等于grid.count()

由于masked.mask是一个布尔数组,因此可以使用例如masked.mask.sum()/grid.count()来将比率限制为满足条件的值。

最新更新