在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)
。
对数据数组进行分块就可以了。
da = da.chunk({'dim0':50,'dim1': 24, 'dim2': 30, 'dim3': 131, 'dim4': 215})
da = 10**da