零填充3D阵列

时间:2016-09-22 21:57:19

标签: dask

我有一个3D数据数组,我想在前两个轴对称地填零。我正在尝试使用dask数组连接函数:http://dask.pydata.org/en/latest/array-stack.html但它只能处理一个轴,而我需要在两个维度中填充。

import dask.array as da

data = da.random.random((20, 30, 4), chunks=(1,1,2))
padding = da.zeros((10, 10, 4)), chunks=(1,1,2))

res = da.concatenate((padding, data, padding), axis=0)

这不起作用,因为axis需要两个参数才能在两个维度上正确连接。

我试图从numpy复制这个:

import numpy as np

data = np.random.random((20, 30, 4))
n_pad = 10
res = np.pad(data, ((n_pad, n_pad), (n_pad, n_pad), (0,0)), mode='constant', constant_values = 0)

返回预期的最终形状(40,50,4)。 应用程序是我需要对一些FFT的实验数据进行零填充,但是所需的零填充将数组形状从(101,101,1024)带到(1024,1024,1024),这对于复杂的值将是16 Gb,这是内存计算不足。我发现了这个: https://pypi.python.org/pypi/out-of-core-fft/1.0但不幸的是它只适用于1D阵列。

0 个答案:

没有答案