2017-07-03 104 views
0

我想使用imshow繪製二維數組,但是出現內存錯誤。我試圖通過在可能的情況下將浮點數更改爲整數來提高內存效率,但我仍然遇到錯誤。Imshow二維數組內存錯誤

源文件是一個包含3列的文件:x,y和z(無標題,空格分隔)。由於X和Y在5x5網格上,我除以5)。二維數組的形狀(下面例子中的「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() 

是否有任何地方我需要改善我的代碼或imshow只是有缺陷?在這種情況下,我需要找到替代方案(任何想法?)。

幫助非常感謝,謝謝。

+0

'imshow'可以處理'nan'值嗎?這個代碼是否可以用一個非常小的矩陣工作,比如10x10? –

+0

是的,它可以和nan值一起工作。 Nan值表示爲無色像素。 – Yorian

回答

0

使用64位python修復它。