将二维数组分割成更小的二维数组

2023-12-23

有没有办法将 numpy 中的二维数组分割成更小的二维数组?

Example

[[1,2,3,4],   ->    [[1,2] [3,4]   
 [5,6,7,8]]          [5,6] [7,8]]

所以我基本上想把一个 2x4 数组切成 2 个 2x2 数组。寻找用于图像的通用解决方案。


另一个问题 http://stackoverflow.com/a/13990648/190597几个月前,这让我想到了使用reshape and swapaxes. The h//nrows这是有道理的,因为这将第一个块的行保持在一起。这也是有道理的,你需要nrows and ncols成为形状的一部分。-1告诉 reshape 填充使 reshape 有效所需的任何数字。有了解决方案的形式,我就不断尝试,直到找到可行的公式。

您应该能够使用某种组合将数组分成“块”reshape and swapaxes:

def blockshaped(arr, nrows, ncols):
    """
    Return an array of shape (n, nrows, ncols) where
    n * nrows * ncols = arr.size

    If arr is a 2D array, the returned array should look like n subblocks with
    each subblock preserving the "physical" layout of arr.
    """
    h, w = arr.shape
    assert h % nrows == 0, f"{h} rows is not evenly divisible by {nrows}"
    assert w % ncols == 0, f"{w} cols is not evenly divisible by {ncols}"
    return (arr.reshape(h//nrows, nrows, -1, ncols)
               .swapaxes(1,2)
               .reshape(-1, nrows, ncols))

turns c

np.random.seed(365)
c = np.arange(24).reshape((4, 6))
print(c)

[out]:
[[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]
 [12 13 14 15 16 17]
 [18 19 20 21 22 23]]

into

print(blockshaped(c, 2, 3))

[out]:
[[[ 0  1  2]
  [ 6  7  8]]

 [[ 3  4  5]
  [ 9 10 11]]

 [[12 13 14]
  [18 19 20]]

 [[15 16 17]
  [21 22 23]]]

我已经发布了一个反函数,unblockshaped, here https://stackoverflow.com/a/16873755/190597,以及 N 维推广here https://stackoverflow.com/a/42298440/190597。概括可以更深入地了解该算法背后的推理。


请注意,还有超级蝙蝠鱼的blockwise_view https://stackoverflow.com/a/28207538/190597。它安排了 不同格式的块(使用更多轴)但它具有以下优点:(1) 总是返回一个视图并且(2)能够处理任何数组 方面。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将二维数组分割成更小的二维数组 的相关文章

随机推荐

  • python中没有负值的插值

    我一直在尝试根据这些值创建一条平滑的线 但结果中不能有负值 到目前为止 我尝试过的所有方法都给出了负值 希望得到一些帮助 import matplotlib pyplot as plt from scipy interpolate impo
  • 使用 NodeJS 从 csv 文件映射数组以实现树层次结构可视化

    我试图以可视化方式展示 SQL 表之间的关系 我的 csv 表中有三列 列 Target Source JoinSource Column Target每个单元格中都有一个表名称 例如 A1 A2 A3 An Column Source具有
  • Excel VBA - 按照表中的描述添加行

    我正在尝试复制这个观点 https i stack imgur com PSKKh png其中底部表中的新行是根据顶部表的 A 列中的值创建的 这是我的代码 Sub testProc Worksheets Sheet1 Activate D
  • “Blueimp jQuery 文件上传”重命名文件

    我正在使用 Blueimp jQuery 文件上传工具 我想在上传文件时完全重命名它们 由于照片被添加到基于 userID 的唯一目录中 因此我真的只想添加名称为 001 jpg 002 jpg 003 jpg 等的照片 我怎样才能完成此操
  • Angular,如何有条件地设置必填字段的样式?

    在按下提交按钮之前 我不想显示表单的验证 按下按钮时 如果有效 则应提交表单 如果未提交 则无效字段应以红色突出显示 由于遗留原因 我导入了一个 css 文件 它定义了input invalid具有红色背景 因此任何输入字段都标记为requ
  • 将 ../ 与 docker-compose 卷一起使用时会发生什么

    我在将文件从 docker 容器内写入主机时遇到问题 我相信这是一个特权问题并且不想设置privileged True 写出文件的解决方法是预先挂起 到我的一卷docker compose yml文件 例如 version 3 servic
  • 了解 VS2010 C# 并行分析结果

    我有一个包含许多独立计算的程序 因此我决定对其进行并行化 我使用 Parallel For Each 对于双核机器来说 结果还不错 大多数时候 CPU 利用率约为 80 90 然而 对于双 Xeon 机器 即 8 核 我只能获得大约 30
  • 延迟 SwiftUI 中的转换

    如何延迟过渡 我想单击一个按钮 然后视图应该延迟转换 我有以下代码 但它没有正确同步 struct ContentView View State var showOne true var body some View VStack if s
  • 调整 UILabel 的大小以适应插图

    我正在构建一个屏幕来扫描条形码 并且我需要在一些屏幕后面放置一个半透明屏幕UILabels以提高浅色背景下的可见度 现在屏幕如下所示 我正在设置背景颜色UILabel得到半透明的盒子 我还创建了一个自定义UILabel子类允许我在边缘之间设
  • 如何知道 S3 存储桶中存储了多少个对象?

    除非我遗漏了什么 否则我看过的 API 似乎都不会告诉你一个对象中有多少个对象
  • Monotouch打开文档-UIDocumentInterationController

    我想在我的 iPhone 应用程序上打开一个用 Monotouch 编写的文档 即在默认 PDF 查看器中启动 PDF 文件 我想我应该使用 UIDocumentInteractionController 任何人对此有任何想法 我已将以下内
  • 生成带有日期的随机时间序列数据

    我正在尝试生成带有日期的随机数据 整数 以便我可以在其上练习 pandas 数据分析命令并绘制时间序列图 temp depth acceleration 2019 01 1 0 218062 1 215978 1 674843 2019 0
  • Russell Libby 的 Pipes 组件

    有谁知道哪里可以下载 Russell Libby 的命名管道 成分 我能找到的所有链接都指向 http home roadrunner com rllibby source html http home roadrunner com rll
  • 在 htaccess 重写规则中附加秘密令牌作为查询字符串有多安全?

    我在尝试提供答案时做了一些测试mod rewrite 重定向但阻止直接访问 https stackoverflow com questions 45326795 mod rewrite redirect but prevent direct
  • 使用 CMake 和 conan 包管理器正确设置 Vulkan、glfw 和 spdlog

    我正在开发 Vulkan API 的渲染器 我在使用 CMake 和 conan 包管理器正确设置项目时遇到了很大的麻烦 让我们看一下我的 conanfile py 的依赖设置 from conans import ConanFile CM
  • 如何在Java中unpickle文件?

    我有一个由 Python 进程创建的 pickle 格式数据文件 实际上是 MCDungeon 缓存文件 我想从 Java 程序中读取此内容 为此 我使用了以下代码 public HashMap
  • 带图像的网格布局

    我正在尝试使用 HTML 和 CSS 为图像构建此网格布局 我想使用 div 而不是 table 但我不确定最好的方法是什么 我还需要在每张图片下面添加一个简短的描述 我使用浮动和padding bottom 底部填充用于模拟元素的高度 这
  • 在卸载之前将 AJAX 发送到服务器 [重复]

    这个问题在这里已经有答案了 所以据说从 Firefox gt 4 开始 https stackoverflow com questions 5398772 firefox 4 onbeforeunload custom message 将窗
  • 我需要帮助解码,这是 json 吗?

    这是json吗 我需要从中回显某些信息 但执行起来遇到困难 我尝试过json decode 但似乎不起作用 a 4 s 5 entry a 1 s 4 type s 10 individual s 5 group a 1 s 6 famil
  • 将二维数组分割成更小的二维数组

    有没有办法将 numpy 中的二维数组分割成更小的二维数组 Example 1 2 3 4 gt 1 2 3 4 5 6 7 8 5 6 7 8 所以我基本上想把一个 2x4 数组切成 2 个 2x2 数组 寻找用于图像的通用解决方案 有另