我正在尝试使用imshow绘制2D数组,但是我得到了内存错误。我试图通过在可能的情况下将浮点数更改为整数来提高内存效率,但我仍然遇到错误。
源文件是一个包含3列的文件:x,y和z(无标题,空格分隔)。由于X和Y在5x5网格上,我除以5)。 2D阵列的形状(" arr"在下面的例子中)是(7422,9637),它很大,但我并没有把它想象得太大。仅绘制[:4000,:4000]的图表太多了。
我使用的代码:
fn = 'xyzData.pts'
data = pd.read_csv(fn, delim_whitespace=True, decimal='.', header=None,
names=['x', 'y', 'z'], dtype={'x': np.int32, 'y': np.int32, 'z': np.float32})
minX = data.x.min()
maxX = data.x.max()
minY = data.y.min()
maxY = data.y.max()
stepSize = 5
arr = np.zeros(((int(maxY-minY)/stepSize)+1, (int(maxX-minX)/stepSize)+1))
arr[:,:] = np.nan
arr[((data.y-minY)/stepSize).astype(int), ((data.x-minX)/stepSize).astype(int)] = data.z
plt.imshow(arr, extent=(minX, maxX, maxY, minY), cmap=cm.gist_rainbow)
plt.colorbar()
plt.show()
我是否需要在哪些方面改进我的代码,或者只是显示有缺陷?在这种情况下,我需要找到一个替代方案(任何想法?)。
非常感谢帮助,谢谢。
答案 0 :(得分:0)
使用64位python修复它。