我有一个包含3列x,y,z(1,6M x 3阵列,128 MB)的大数据文件。我试图在Matplotlib中生成一个contourf图,但是当转换X,Y网格的数据时,我的内存耗尽,这当然很可能发生。 这是一个示例脚本(我也尝试过其他numpy / scipy方法进行插值,但是相同的MemoryError):
import numpy as np
import matplotlib.pyplot as plt
a=np.loadtxt("data.dat")
xi = np.linspace(min(a[:,0]), max(a[:,0]), 40000)
yi = np.linspace(min(a[:,1]), max(a[:,1]), 40000)
X, Y = np.meshgrid(xi, yi)
Z = griddata(a[:,0], a[:,1], a[:,2], xi, yi, interp='nearest')
plt.contourf(X,Y,Z)
plt.show()
所以我尝试使用MATLAB进行相同的程序,最后,要么我必须使用一个非常小的矩阵进行插值,从而丢失了我有兴趣获得的图像(数据显示非常快的振荡)。这是一个MATLAB脚本(变量“a”也代表数据数组):
x1=a(:,1);
y1=a(:,2);
z1=a(:,3);
xi=linspace(min(x1),max(x1),40000);
yi=linspace(min(y1),max(y1),40000);
[XI YI]=meshgrid(xi,yi);
ZI = griddata(x1,y1,z1,XI,YI,'nearest');
contourf(XI,YI,ZI)
显然,它看起来和Python一样:) 只是为了表明获得我想要的东西是可行的,来自Origin的结果是here
我在网上找到的解决方案都没有解决我的问题。