Matplotlib imshow: cómo aplicar una máscara en la matriz

Estoy tratando de analizar gráficamente datos 2d. matplotlib.imshow es muy útil en eso, pero creo que podría usarlo aún más si pudiera excluir algunas celdas de mi matriz, valores fuera de un rango de interés. Mi problema es que estos valores “aplanan” el mapa de colores en mi rango de interés. Podría tener más resolución de color después de excluir estos valores.

Sé cómo aplicar una máscara en mi matriz para excluir estos valores, pero devuelve un objeto 1d después de aplicar la máscara:

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

¿Hay alguna forma de pasar la máscara para imshow cómo reconstruir una matriz 2D?

Puede usar numpy.ma.mask_where para conservar la forma de la matriz, por ejemplo

 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()