使用带有 numpy.ma 的掩码来掩码数组

时间:2021-06-02 17:45:13

标签: python numpy numpy-ndarray

我有一个数组 (S1_data) 和一个二进制数组掩码 (0,1) (S1_mask)。我想屏蔽二进制数组掩码中对应于 values = 0 的值并保持值 = 1。我想将屏蔽数组保存到 GeoTIFF 中。问题是输出 GeoTIFF 看起来与输入文件(S1_data 数组)完全一样。

这是我的代码:

import numpy.ma as ma
# S1_data = data to be masked
# S1_mask = mask to apply
arr = ma.masked_array(S1_data,mask=S1_mask)

with rio.open('/home/DATA/masked.tif', 'w', **profile) as dst:
    # Write to disk
    dst.write(arr)

S1_data 数组如下所示:

array([[[nan, nan, nan, ..., nan, nan, nan],
        [nan, nan, nan, ..., nan, nan, nan],
        [nan, nan, nan, ..., nan, nan, nan],
        ...,
        [nan, nan, nan, ..., nan, nan, nan],
        [nan, nan, nan, ..., nan, nan, nan],
        [nan, nan, nan, ..., nan, nan, nan]]], dtype=float32)

S1_mask

array([[[1., 1., 1., ..., 1., 1., 1.],
        [1., 1., 1., ..., 1., 1., 1.],
        [1., 1., 1., ..., 1., 1., 1.],
        ...,
        [1., 1., 1., ..., 1., 1., 1.],
        [1., 1., 1., ..., 1., 1., 1.],
        [1., 1., 1., ..., 1., 1., 1.]]], dtype=float32)

数组 arr 如下所示:

masked_array(
  data=[[[--, --, --, ..., --, --, --],
         [--, --, --, ..., --, --, --],
         [--, --, --, ..., --, --, --],
         ...,
         [--, --, --, ..., --, --, --],
         [--, --, --, ..., --, --, --],
         [--, --, --, ..., --, --, --]]],
  mask=[[[ True,  True,  True, ...,  True,  True,  True],
         [ True,  True,  True, ...,  True,  True,  True],
         [ True,  True,  True, ...,  True,  True,  True],
         ...,
         [ True,  True,  True, ...,  True,  True,  True],
         [ True,  True,  True, ...,  True,  True,  True],
         [ True,  True,  True, ...,  True,  True,  True]]],
  fill_value=1e+20,
  dtype=float32)

0 个答案:

没有答案