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

如何用Python将3D数组重塑为指定2D数组并还原?

3D数组转指定2D数组并还原的解决方案

原3D数组形状为(3, 3, 3),对应3张3×3的高度图;目标2D数组需要将每张图对应位置的数值归为一行,形状为(9, 3)。单纯使用np.reshape无法实现,因为需要调整元素的轴顺序,结合轴变换+重塑即可完成需求。

代码实现

1. 导入依赖并创建原数组

import numpy as np

# 原3D数组:shape=(3,3,3),维度对应(图数, 行, 列)
arr_3d = np.array([
    [[0, 1, 2], [3, 4, 5], [6, 7, 8]],
    [[0, 1, 2], [3, 4, 5], [6, 7, 8]],
    [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
])

2. 转换为目标2D数组

# 先转置轴顺序为(行, 列, 图数),再重塑为(9,3)
arr_2d = arr_3d.transpose(1, 2, 0).reshape(-1, 3)
  • transpose(1,2,0):将原数组的轴从(图,行,列)调整为(行,列,图),让每个(行,列)位置的跨图数值集中在第三个轴上
  • reshape(-1,3):自动计算第一维度为3×3=9,得到每行对应一个位置的跨图数值,最终输出符合需求的2D数组

3. 还原回原3D数组

# 先重塑回(3,3,3),再转置轴顺序为(图数, 行, 列)
restored_3d = arr_2d.reshape(3, 3, 3).transpose(2, 0, 1)

验证还原正确性:np.array_equal(restored_3d, arr_3d)会返回True

高度图插值场景适配

转换为2D数组后,每一行对应同一个高度图位置在不同帧的数值,可直接对每行执行插值操作(比如用np.interp实现线性插值),得到插值后的2D数组后,再按上述还原步骤转换为3D数组,即可得到平滑过渡的高度图序列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 11:35:28