Matplotlib imshow:如何在矩阵上应用蒙版

Lea*_*ess 8 python matplotlib imshow

我试图以图形方式分析2d数据.matplotlib.imshow在这方面是非常有用的,但我觉得如果我可以从我的矩阵中排除一些细胞,我可以更多地使用它,超出一系列感兴趣的值.我的问题是这些值在我感兴趣的范围内"压平"了色彩图.排除这些值后,我可以获得更多的颜色分辨率.

我知道如何在我的矩阵上应用蒙版来排除这些值,但它在应用蒙版后返回1d对象:

mask = (myMatrix > lowerBound) & (myMatrix < upperBound)
myMatrix = myMatrix[mask] #returns a 1d array :(
Run Code Online (Sandbox Code Playgroud)

有没有办法将掩码传递给imshow如何重建二维数组?

Ed *_*ith 9

您可以使用它numpy.ma.mask_where来保留数组形状,例如

import numpy as np
import matplotlib.pyplot as plt

lowerBound = 0.25
upperBound = 0.75
myMatrix = np.random.rand(100,100)

myMatrix =np.ma.masked_where((lowerBound < myMatrix) & 
                             (myMatrix < upperBound), myMatrix)


fig,axs=plt.subplots(2,1)
#Plot without mask
axs[0].imshow(myMatrix.data)

#Default is to apply mask
axs[1].imshow(myMatrix)

plt.show()
Run Code Online (Sandbox Code Playgroud)