You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Numpy操作:将3D数组按窗格水平拆分生成4D数组的实现方法

Numpy 3D数组按窗格水平拆分的优雅实现

下面给出两种符合Python规范的实现方式,你可以根据场景选择:


方法1:reshape + 轴转置(性能最优)

这种方式基于Numpy的视图操作,不会产生额外的内存拷贝,处理大数组时效率最高:

import numpy as np

# 初始化原数组
arr3d = np.arange(36).reshape(3, 2, 6)

# 核心实现
arr4d = arr3d.reshape(3, 2, 3, 2).transpose(0, 2, 1, 3)

# 验证结果
print(arr4d.shape)  # 输出 (3, 3, 2, 2)

实现逻辑:

  1. 先通过reshape(3, 2, 3, 2)把原数组最后一维长度为6的维度,拆分为「3个块 × 每块2列」的结构
  2. 再通过transpose(0,2,1,3)调整轴顺序,把拆分后的块维度移到第二个位置,最终匹配你需要的arr4d[窗格索引, 拆分块索引, 行索引, 列索引]的访问规则

方法2:列表推导式+hsplit(可读性最优)

如果更看重代码可读性、场景为小数组处理,可以直接按你描述的拆分逻辑实现:

arr4d = np.array([np.hsplit(pane, 3) for pane in arr3d])

这种方式完全贴合你对「每个窗格单独水平拆分」的需求描述,代码语义一目了然。


两种方法得到的结果都和你给出的result完全一致,可通过np.array_equal(arr4d, result)验证返回True。

内容的提问来源于stack exchange,提问作者Andi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 20:24:04