显示2D阵列内存

2024-09-27 07:31:58 发布

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

我试图用imshow绘制一个2D数组,但是我得到了一个内存错误。我试着通过在可能的情况下将floats改为int来提高内存效率,但仍然得到了错误。你知道吗

源文件是一个包含3列的文件:x、y和z(没有标题,空格分隔)。因为X和Y在一个5x5的网格上,所以我除以5)。二维阵列的形状(下面的例子中的“arr”)是(74229637),这是大的,但我没有把它说得太大。只打印[: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()

是否有任何地方我需要改进我的代码或imshow只是有缺陷?在这种情况下,我需要找到一个替代(任何想法?)。你知道吗

非常感谢您的帮助,谢谢。你知道吗


Tags: 内存代码data错误np情况pltint

热门问题