如何将二维NumPy数组转换为指定结构的三维NumPy数组
NumPy二维数组转指定三维数组实现方案
你需要的转换本质是将原二维数组的每个标量元素,沿新增的第三维度重复3次,将原形状为(3,3)的数组转为形状(3,3,3)的数组,以下是两种可直接运行的实现方式:
方法1:np.repeat(推荐,返回可写数组)
先给原数组新增一个长度为1的第三轴,再沿该轴将每个元素重复3次,生成的结果是独立的可写数组,是最通用的实现方式:
import numpy as np # 原始数组 a = np.array([[1, 2, 3], [2, 3, 4], [4, 5, 6]]) # 转换操作 result = np.repeat(a[:, :, np.newaxis], repeats=3, axis=2)
运行后result的输出和你给出的目标结构完全一致:
[[[1 1 1] [2 2 2] [3 3 3]] [[2 2 2] [3 3 3] [4 4 4]] [[4 4 4] [5 5 5] [6 6 6]]]
方法2:np.broadcast_to(低内存版本,默认返回只读视图)
利用NumPy广播机制直接生成目标形状的视图,不需要拷贝数据,内存占用极低,适合大数组场景。如果需要修改数组元素,追加.copy()转为真实数组即可:
# 生成只读视图,无额外内存开销 result_view = np.broadcast_to(a[:, :, np.newaxis], (3, 3, 3)) # 转为可写的独立数组 result = result_view.copy()
内容的提问来源于stack exchange,提问作者Flynni123
相关产品推荐
相关产品推荐

