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
。
我有以下二维 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
。