Python:如何检索和绘制 numpy 数组的未屏蔽部分?

Python: how to retrieve and plot the unmasked part of a numpy array?

我有以下二维 numpy 数组:

import numpy as np
y = np.array([[4,1,1,2],[1,1,9,6],[1,2,8,4],[1,11,17,8]])

我想屏蔽它以忽略 <2:

的值
m = np.ma.masked_where(y<2, y) 

剧情是这样的:

plt.imshow(m,interpolation='nearest',origin='lower')

现在,假设我想忽略遮罩,而专注于其余部分。 如何提取 y>2 所在的区域,分配它们 1,并将它们与遮罩区域一起绘制?

结果与上图类似,只是 y>2 个方块的值为 1 并且用相同的颜色绘制。

只需使用 np.where 和您已经创建的布尔掩码

m2 = np.where(m.mask, 1, y)

正如上面评论中指出的,这个问题可以通过调用

来解决
import numpy.ma as ma
mask=ma.getmask(m) 
im=plt.imshow(mask,origin='lower') #equivalent to plt.imshow(m.mask,origin='lower')
plt.colorbar(im)

产生

然后,如果要将 1 分配给未屏蔽的区域:

im2=numpy.logical_not(mask)
im3=plt.imshow(im2,origin='lower')
plt.colorbar(im3)

产生

现在遮罩区域的值为 0,未遮罩区域的值为 1