首页 > 解决方案 > 平均一个 3D 阵列以获得较低的分辨率

问题描述

我有一个形状为(100,100,100)的 3D numpy 数组。我想将分辨率降低到(50,50,50)。最快的方法是什么?

所以在一维中我想转

[1, 2, 3, 4, 5, 6]

进入

[1.5, 3.5, 5.5]

一个 2D 的例子是

[[1, 2, 3, 4], 
 [2, 3, 4, 5], 
 [1, 2, 3, 4], 
 [0, 1, 2, 3]]

进入

[[2, 4], 
 [1, 3]]

标签: pythonnumpy

解决方案


这是我的解决方案...

def change_resolution(x, dimx, dimy, dimz, N):
    x = x.reshape(dimx*N, dimy*N, dimz, N)
    x = x.sum(axis=3)/N
    x = x.reshape(dimx*N, dimy, N, dimz)
    x = x.sum(axis=2)/N
    x = x.reshape(dimx, N, dimy, dimz)
    x = x.sum(axis=1)/N
    return x

dimx 等是新的分辨率,而 dimx*N 是 3D 输入数组 x 的分辨率。


推荐阅读