I would like to plot an array of 20 millions object, I have 8GB RAM and still I get the following error when I run the following lines:
import matplotlib.pyplot as plt import numpy as np d = np.arange(200000000) plt.plot(d) plt.show()
Traceback (most recent call last): ... File "C:\Python27\lib\site-packages\matplotlib\axes.py", line 317, in _grab_next_args for seg in self._plot_args(remaining, kwargs): File "C:\Python27\lib\site-packages\matplotlib\axes.py", line 292, in _plot_args x = np.arange(y.shape, dtype=float) MemoryError
Due to physical limitations of displays and plotters, you won't be able to plot 20,000,000 points anyway. So you could reduce your array by sampling it or by using means of slices:
>>> m = 20000000 >>> a = np.arange(m) >>> n = 100 # <- reducing to 100 points >>> s = m/n # <- size of slices to compress >>> reduced =  >>> for i in xrange(n): ... slice = a[i*s:(i+1)*s] ... reduced.append(np.mean(slice)) >>> reduced [99999.5, 299999.5, ..., 19699999.5, 19899999.5]
np.mean makes sense on the objects you're plotting.