使用FLOAT32當我試圖使用dask.array
內存錯誤在DASK陣列
文件導入1.25 GB數據集成蟒是uint16
是一個1312 * 2500 * 196陣列。我需要將其轉換爲float32
數組以備後續處理。
我設法然而縫合在一起這DASK數組中uint16
,當我嘗試轉換爲float32
我得到內存錯誤。
無論我對塊大小做什麼,我都會遇到內存錯誤。
我通過連接在100線(打破了2500維陣列成的100行小件創建陣列,因爲dask
本身不能讀取.RAW
成像文件我必須使用numpy.memmap()
讀取文件然後創建數組 下面我將提供一個「儘可能短」的代碼片段:
我已經嘗試了兩種方法:
1)創建全面uint16
陣列,然後嘗試轉換爲float32
:
(注:memmap
是1312x100x196陣列和行範圍是從0到24)
for i in range(lines):
NewArray = da.concatenate([OldArray,Memmap],axis=0)
OldArray = NewArray
return NewArray
,然後我使用
Float32Array = FinalArray.map_blocks(lambda FinalArray: FinalArray * 1.,dtype=np.float32)
在方法2:
for i in range(lines):
NewArray = da.concatenate([OldArray,np.float32(Memmap)],axis=0)
OldArray = NewArray
return NewArray
這兩種方法都會導致內存錯誤。
這是否有任何理由?
我讀了dask
數組能夠完成高達100GB的數據集計算。
我嘗試了所有的塊大小(從小10x10x10到單個線)