首页 > 后端开发 > Python教程 > 如何将 2D NumPy 数组分割成更小的 2D 数组?

如何将 2D NumPy 数组分割成更小的 2D 数组?

DDD
发布: 2024-11-10 14:42:02
原创
839 人浏览过

How can I Slice a 2D NumPy Array into Smaller 2D Arrays?

在 NumPy 中将 2D 数组切片为更小的 2D 数组

处理表示为 2D 数组的图像或其他数据时,通常需要将它们切成更小的数组以进行处理或分析。在 numpy 中,这可以通过组合重塑和交换轴操作来实现。

为了理解该方法,让我们考虑一个示例。假设我们有一个 2x4 数组 c:

c = np.arange(24).reshape((4, 6))
登录后复制

并且我们想将其切片为两个 2x2 数组。我们知道第一个块应包含前两行和前两列的元素,第二个块应包含其余元素。

重塑操作可用于将数组重塑为新形状,在本例中为 2x2x3。新形状中的行数和列数指定为前两个参数,第三个参数 -1 告诉 numpy 计算必要的维度以使重塑有效。

c.reshape(2, 2, -1)
登录后复制

swapaxes then交换行和列以获得所需的块格式:

c.reshape(2, 2, -1).swapaxes(1, 2)
登录后复制

最后,使用第二次重塑将数组展平为所需的形状:

c.reshape(2, 2, -1).swapaxes(1, 2).reshape(-1, 2, 2)
登录后复制

结果是两个2x2 数组,根据需要:

[[[ 0  1]
  [ 6  7]] [[ 2  3]
  [ 8  9]]]

[[[12 13]
  [18 19]] [[14 15]
  [20 21]]]
登录后复制

提供的代码包括一个块形函数,该函数将这种切片方法概括为任何所需数量的块:

def blockshaped(arr, nrows, ncols):
    return (arr.reshape(h//nrows, nrows, -1, ncols)
               .swapaxes(1, 2)
               .reshape(-1, nrows, ncols))
登录后复制

以上是如何将 2D NumPy 数组分割成更小的 2D 数组?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板