我读过herematplotlib擅长处理大型数据集。我正在编写一个数据处理应用程序,并将matplotlib plots嵌入到wx中,发现matplotlib在处理大量数据方面非常糟糕,无论是在速度上还是在内存上。有没有人知道除了对输入进行降采样之外,还可以加速(减少)matplotlib的内存占用?
要说明matplotlib对内存的影响,请考虑以下代码:
import pylab
import numpy
a = numpy.arange(int(1e7)) # only 10,000,000 32-bit integers (~40 Mb in memory)
# watch your system memory now...
pylab.plot(a) # this uses over 230 ADDITIONAL Mb of memory
我对极值也很感兴趣,所以在绘制大块数据之前,我会这样做:
当然
np.max
只是极限计算函数的一个例子。附则。 使用
numpy
“跨步技巧”应该可以避免在重塑期间复制数据。在这里,下采样是一个很好的解决方案——在matplotlib中绘制10米点会消耗大量内存和时间。如果你知道多少内存是可以接受的,那么你可以根据这个数量减少采样。例如,假设1M点需要额外的23 MB内存,并且您发现它在空间和时间上都是可以接受的,因此您应该减少采样,使其始终低于1M点:
或者类似于上面的片段(上面的内容可能会对你的口味过于激进。)
我有兴趣保留一块原木样地的一面,所以我想到了这个: (下采样是我的第一次尝试)
这让我更好地保留了情节的一面:
相关问题 更多 >
编程相关推荐