使用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到单个线)