我有一个三维的numpy数组,形状为Nx64x64。我想通过取平均值,在维度1和维度2上对其进行下采样,得到一个新的数组,其形状为nx8x8x8。在
我有几个可行的实现,但我觉得必须有一个更简洁的方法来实现它。在
我最初试着用np.拆分公司名称:
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
我还尝试使用普通索引:
^{pr2}$我想知道itertools.groupby,但看起来也很复杂。在
有人知道干净的解决方案吗?在
您可以使用zoom - scipy.ndimage。 此库允许您沿任意3个轴缩放。在
整形将最后两个轴再拆分为两个,使后两个轴的长度等于块大小,给我们一个
5D
数组,然后沿着第三个和第五个轴使用mean
在块大小较小的较小数组上运行示例
(2,2)
-1)输入:
^{pr2}$2)手动校验输出值少:
3)使用建议的方法并手动验证:
相关问题 更多 >
编程相关推荐