如何避免大型数据数组的内存错误

问题描述 投票:0回答:1

在Python中,我有一个形状较大的xarray数据数组(da)

In [1]: da.shape
Out[1]: (744, 24, 30, 131, 215)

我需要执行该操作

da = 10**da
但是,我遇到了内存错误

内存错误:无法为形状为 (744, 24, 30, 131, 215) 和数据类型 float32 的数组分配 56.2 GiB

有没有办法迭代地进行操作?我尝试手动循环,但这给出了相同的错误。

for ii in range(len(da[:,0,0,0,0])):
    da[ii,:,:,:,:] = 10**da[ii,:,:,:,:]

它适用于较小的数组,例如

(24, 24, 30, 131, 215)

python python-3.x memory python-xarray
1个回答
0
投票

对数据数组进行分块就可以了。

da = da.chunk({'dim0':50,'dim1': 24, 'dim2': 30, 'dim3': 131, 'dim4': 215})
da = 10**da
© www.soinside.com 2019 - 2024. All rights reserved.