gpt4 book ai didi

python - 2D numpy 数组的 block 均值(二维)

转载 作者:行者123 更新时间:2023-12-04 08:07:22 26 4
gpt4 key购买 nike

此问题与 Block mean of numpy 2D array 有关(实际上标题几乎一样!)除了我的情况是一个概括。我想将一个二维数组分成两个方向的子 block ,并在 block 上取平均值。 (链接的示例仅将数组划分为一维)。
因此,如果我的数组是这样的:

import numpy as np 
a=np.arange(16).reshape((4,4))

array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
如果我的子 block 大小为 2x2,那么我想要的答案是
array([[ 2.5,  4.5],
[10.5, 12.5]])
我能想到的唯一方法是一次仔细地 reshape 一个维度:
np.mean(np.mean(a.reshape((2,2,-1)),axis=1).reshape((-1,2,2)),axis=2)
这给出了正确的解决方案,但有点令人费解,我想知道是否有更简洁的代码来做同样的事情,也许是一些我不知道的 numpy 阻塞函数?

最佳答案

你可以做:

rows, cols = a.shape

# sample data
a=np.arange(24).reshape((6,4))

a.reshape(rows//2, 2, cols//2, 2).mean(axis=(1,-1))
输出:
array([[ 2.5,  4.5],
[10.5, 12.5],
[18.5, 20.5]])

关于python - 2D numpy 数组的 block 均值(二维),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66160734/

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