小编prd*_*dnr的帖子

对 numpy 数组进行下采样的最佳方法是什么?

我有一个 3 维 numpy 数组,形状为 Nx64x64。我想通过取平均值在维度 1 和维度 2 上对其进行下采样,从而产生形状为 Nx8x8 的新数组。

我有几个工作实现,但我觉得必须有一种更简洁的方法来实现它。

我最初尝试使用 np.split:

def subsample(inparray, n):
    inp = inparray.copy()
    res = np.moveaxis(np.array(np.hsplit(inp, inp.shape[1]/n)), 1, 0)
    res = np.moveaxis(np.array(np.split(res, inp.shape[2]/n, axis=3)), 1, 0)
    res = np.mean(res, axis=(3,4))
    return res
Run Code Online (Sandbox Code Playgroud)

我也尝试使用普通索引:

def subsample2(inparray, n):
    res = np.zeros((inparray.shape[0], n, n))
    lin = np.linspace(0, inparray.shape[1], n+1).astype(int)
    bounds = np.stack((lin[:-1], lin[1:]), axis=-1)

    for i, b in enumerate(bounds):
        for j, b2 in enumerate(bounds):
            res[:, i, j] = np.mean(inparray[:, b[0]:b[1], b2[0]:b2[1]], axis=(1,2))
    return res
Run Code Online (Sandbox Code Playgroud)

我曾想过使用 …

python arrays numpy

8
推荐指数
1
解决办法
6593
查看次数

二维场的功率谱密度 - Python

我想使用韦尔奇的方法来计算二维场的功率谱密度。Scipy 中有一个可用的实现,但根据文档,仅适用于一维时间序列。

有人知道适用于 2D 字段的实现吗?

到目前为止,我一直使用2D傅里叶变换来进行计算,但我听说这种方法对噪声敏感,而Welch的方法更稳健。

python signal-processing fft spatial scipy

5
推荐指数
0
解决办法
2849
查看次数

标签 统计

python ×2

arrays ×1

fft ×1

numpy ×1

scipy ×1

signal-processing ×1

spatial ×1