gpt4 book ai didi

python - 通过平均多个单元格来简化矩阵

转载 作者:太空狗 更新时间:2023-10-30 02:30:02 24 4
gpt4 key购买 nike

我有一个大的 2D numpy 矩阵需要变小(例如:从 100x100 转换为 10x10)。

我的目标基本上是:将 nxn 矩阵分解成更小的 mxm 矩阵,对这些 mxm 切片中的单元格进行平均,然后构造一个这些 mxm 切片中的新(较小)矩阵。

我正在考虑使用类似 matrix[a::b, c::d] 的方法来提取较小的矩阵,然后对这些值进行平均,但这似乎过于复杂。有没有更好的方法来实现这一点?

最佳答案

你可以用 view_as_blocks 把你的数组分成 block 函数(在 scikit-image 中)。

对于 2D 数组,这将返回一个 4D 数组,其中 block 按行排序:

>>> import skimage.util as ski
>>> import numpy as np
>>> a = np.arange(16).reshape(4,4) # 4x4 array
>>> ski.view_as_blocks(a, (2,2))
array([[[[ 0, 1],
[ 4, 5]],

[[ 2, 3],
[ 6, 7]]],


[[[ 8, 9],
[12, 13]],

[[10, 11],
[14, 15]]]])

沿最后两个轴取平均值返回一个二维数组,其中每个 block 均值为:

>>> ski.view_as_blocks(a, (2,2)).mean(axis=(2,3))
array([[ 2.5, 4.5],
[ 10.5, 12.5]])

注意:view_as_blocks 通过修改步幅返回数组的 View (它也适用于二维以上的数组)。它纯粹是在 NumPy 中使用 as_strided 实现的,因此如果您无法访问 scikit-image 库,您可以 copy the code from here .

关于python - 通过平均多个单元格来简化矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29435842/

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