遮罩2D Numpy数组

RD

我想在2D numpy数组上应用蒙版。但是它不能正常工作。假设我有

val(lat, lon)  ---> my 2D array (20, 30)


Mask_lat = np.ma.masked_array(lat, mask=latmask)  ---> masked lat (5,)


Mask_lon = np.ma.masked_array(lon, mask =lonmask)   ---> masked lon (8,)


Maks_val = np.ma.masked_array(val, mask=mask_lat_lon) ---> ?

我不知道我该如何通过正确的mask_lat_lon蒙版val (5,8)如果有人指导我,我将不胜感激。

先感谢您。

乔·金顿

如果我正确理解了您的问题,则您有两个1D数组,分别代表2D数组中的y和x(经纬度)。您要基于2D数组中x / y位置遮罩区域。

要理解的关键部分是2D阵列的蒙版也是2D。

例如,让我们掩盖2D数组的单个元素:

import numpy as np

z = np.arange(20).reshape(5, 4)
mask = np.zeros(z.shape, dtype=bool)

mask[3, 2] = True

print z
print np.ma.masked_array(z, mask)

这样产生:

[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]
 [16 17 18 19]]

[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 -- 15]
 [16 17 18 19]]

在您的情况下,您需要使用两个1D x和y数组来创建2D蒙版。例如:

import numpy as np

x = np.linspace(-85, -78, 4)
y = np.linspace(32, 37, 5)
z = np.arange(20).reshape(5, 4)

xmask = (x > -82.6) & (x < -80)
ymask = (y > 33) & (y < 35.6)

print xmask
print ymask

然后,我们需要使用广播将它们组合为单个2D蒙版:

mask = xmask[np.newaxis, :] & ymask[:, np.newaxis]

切片newaxis(或None,它们是同一个对象)会在该位置添加一个新轴,从而将1D数组变成2D数组。您之前已经看过此内容,快速浏览一下内容xmask[np.newaxis, :]ymask[:, np.newaxis]外观会很有用

In [14]: xmask
Out[14]: array([False, False,  True, False], dtype=bool)

In [15]: ymask
Out[15]: array([False,  True,  True, False, False], dtype=bool)

In [16]: xmask[np.newaxis, :]
Out[16]: array([[False, False,  True, False]], dtype=bool)

In [17]: ymask[:, np.newaxis]
Out[17]:
array([[False],
       [ True],
       [ True],
       [False],
       [False]], dtype=bool)

mask然后将是(请记住True元素被屏蔽):

In [18]: xmask[np.newaxis, :] & ymask[:, np.newaxis]
Out[18]:
array([[False, False, False, False],
       [False, False,  True, False],
       [False, False,  True, False],
       [False, False, False, False],
       [False, False, False, False]], dtype=bool)

最后,我们可以z基于此蒙版创建2D蒙版数组

arr = np.masked_array(z, mask)

这给了我们最终结果:

 [[ 0  1  2  3]
  [ 4  5 --  7]
  [ 8  9 -- 11]
  [12 13 14 15]
  [16 17 18 19]]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用numpy计算2d数组的“最大遮罩”

来自分类Dev

通过索引数组(如np.in1d的2d数组)遮罩2D Numpy数组

来自分类Dev

由两个遮罩组成的Numpy滤镜2D阵列

来自分类Dev

遮罩多维数组-numpy

来自分类Dev

Numpy 2D数组到表格

来自分类Dev

更新2D numpy数组值

来自分类Dev

Python 2D NumPy数组理解

来自分类Dev

大型2D numpy数组相乘

来自分类Dev

过采样的Numpy数组(2D)

来自分类Dev

numpy 数组上的 2D argmax

来自分类Dev

可以重建2d矩阵,其中已将遮罩与numpy一起使用,并且已展平

来自分类Dev

NumPy:数组和标量列表中的2D数组

来自分类Dev

基于索引的2D numpy数组排列numpy 2D数组的numpy方法是什么?

来自分类Dev

将2D numpy矩阵转换为2D numpy数组

来自分类Dev

用1D numpy数组制作2D

来自分类Dev

从 3D numpy 数组中提取 2D

来自分类Dev

带有2D值和索引数组的numpy 2D数组分配

来自分类Dev

numpy:使用2D索引数组进行2D数组访问

来自分类Dev

NumPy检查2D数组是否是2D数组的子集

来自分类Dev

如何使用numpy在现有2D数组中添加2D子数组?

来自分类Dev

在Numpy中用2D数组索引2D数组

来自分类Dev

将2d numpy数组的行组合合并为2d数组

来自分类Dev

numpy:使用2D索引数组进行2D数组访问

来自分类Dev

从2D numpy数组快速计算随机的3D numpy数组

来自分类Dev

将2d numpy数组连接到3d numpy数组

来自分类Dev

如何将2d numpy数组列表连接到3d numpy数组?

来自分类Dev

从numpy 1D数组列表创建numpy 2D数组

来自分类Dev

将多个 2d numpy 数组放入 3d numpy 数组

来自分类Dev

2D Numpy数组到HTML表?