python – how to get the data from an plt.imshow()?

I have the following code

import scipy.misc
import matplotlib.pyplot as plt

a = plt.imshow(scipy.misc.lena())

and what I’m hoping to achieve is get the data on lena by accessing a or it’s children.

The reason is I’ll be accessing the image as plt.gcf() or plt.gca()

Best answer

a should be a matplotlib.image.AxesImage instance, in which case you can use




The array is stored as a masked array.


There’s an official example available at

Direct access

You can also use


to access the array data directly, though I imagine that the getters and setters are the preferred method.