2015-10-07 2 views
4

Я пытаюсь проанализировать графически 2d данные. matplotlib.imshow очень полезен в этом, но я чувствую, что могу еще больше использовать это, если бы мог исключить некоторые ячейки из моей матрицы, значения вне диапазона интересов. Моя проблема заключается в том, что эти значения «сглаживают» цветовой набор в моем диапазоне интересов. Я мог бы иметь большее разрешение цвета после исключения этих значений.Matplotlib imshow: как применить маску на матрице

Я знаю, как применять маску на моей матрице, чтобы исключить эти значения, но она возвращает 1d объект после применения маски:

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

Есть ли способ передать маску imshow как восстановить массив 2d?

ответ

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() 
Смежные вопросы