Masked Array - 计算特定区间内的值
Masked Array - Count the value in a specific interval
我对屏蔽阵列和卫星数据还很陌生。我想弄清楚如何计算 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()
将比率限制为满足您条件的那些值。
我对屏蔽阵列和卫星数据还很陌生。我想弄清楚如何计算 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()
将比率限制为满足您条件的那些值。