Matplotlib hexbin存储器

2024-04-19 14:44:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用python对一个相当大的数据集绘制一个hexbin图。包含数据的两个数组有3500万个条目长。但是,它们只占用1.5GB的内存,而我有超过4GB的可用内存。Hexbin因内存错误而失败。在

*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug
Traceback (most recent call last):
File "plotmodel.py", line 20, in <module>
plt.hexbin(d,t,m, bins='log', gridsize=20, xscale='log', lw=1, edgecolors='black',    alpha=0.8, cmap=plt.cm.jet)
File "/Library/Frameworks/Python.framework/Versions/7.1/lib/python2.7/site-packages/matplotlib/pyplot.py", line 2142, in hexbin
ret = ax.hexbin(x, y, C, gridsize, bins, xscale, yscale, extent, cmap, norm, vmin, vmax, alpha, linewidths, edgecolors, reduce_C_function, mincnt, marginals, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/7.1/lib/python2.7/site-packages/matplotlib/axes.py", line 6035, in hexbin
iy2 = np.floor(y).astype(int)
MemoryError

hexbin不能在大型数据集上工作的根本原因是什么?还是由于硬件限制造成的错误?在


Tags: 数据内存inpylog错误lineplt
1条回答
网友
1楼 · 发布于 2024-04-19 14:44:54

看起来hexbin生成了几个与输入数据大小相同的np.ndarray(粗略计算我得到了8!)。这并没有什么基础性的东西,它是这样写的,它的目的是从numpy得到向量化的速度。在

我建议将hexbin从mpl中取出,将其分成三个部分,第一部分设置hexarray的细节,第二部分将数据添加到accum数组中(这样您可以分块处理数据),第三部分使用accum和第一部分的输出来实际绘制绘图。在

相关问题 更多 >