2015-10-07 69 views
4

我試圖分析圖形化的2d數據。 matplotlib.imshow在這方面非常有用,但是我覺得如果我可以從我的矩陣中排除一些細胞,那麼我可以更多地使用這些細胞。我的問題是,這些值使我感興趣的範圍內的色彩圖「變平」。排除這些值後,我可以獲得更多的顏色分辨率。Matplotlib imshow:如何在矩陣上應用蒙版

我知道如何在我的矩陣排除這些值敷個面膜,但它應用掩碼後返回1D對象:

mask = (myMatrix > lowerBound) & (myMatrix < upperBound) 
myMatrix = myMatrix[mask] #returns a 1d array :(

有沒有辦法到面罩傳遞給imshow如何重建一個二維數組?

回答

6

您可以使用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()