gpt4 book ai didi

numpy - 通过在 Numpy 或类似工具中进行平均来缩小 3D 矩阵

转载 作者:行者123 更新时间:2023-12-05 01:46:09 24 4
gpt4 key购买 nike

NumpyScipy 或什至使用 NetCDF 工具或类似的东西?不久前我使用 strides 写了一个 2D 的,但是一个随时可用的函数会有很大帮助。

编辑:

我希望输入和输出的示例:

输入的形状:(500, 500, 100)

调用函数:downsize(input, 10, 10, 10, func)

输出的形状:(50, 50, 10) 其中每个单元格的值都是 func 在连续的 10x10x10 子矩阵上的结果。

或者,代码可以获得所需的矩阵大小作为输入,而不是子矩阵的大小,然后计算出它们。

谢谢

最佳答案

这是一种使用 reshape 将每个轴切成两半的方法,从而创建六个轴,然后对三个原始轴中的每一个的第二个切片轴执行合并平均,以获得分 block 平均 -

def blockwise_average_3D(A,S):    
# A is the 3D input array
# S is the blocksize on which averaging is to be performed

m,n,r = np.array(A.shape)//S
return A.reshape(m,S[0],n,S[1],r,S[2]).mean((1,3,5))

样本运行-

In [107]: A = np.random.randint(0,255,(500,500,100)) # 3D Input array
...: S = (10,10,10) # Blocksize
...:

In [108]: out = blockwise_average_3D(A,S)

In [109]: out[0,0,0]
Out[109]: 124.242

In [110]: A[:10,:10,:10].mean()
Out[110]: 124.242

In [111]: out[0,1,0]
Out[111]: 129.89400000000001

In [112]: A[:10,10:20,:10].mean()
Out[112]: 129.89400000000001

关于numpy - 通过在 Numpy 或类似工具中进行平均来缩小 3D 矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37532184/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com