如何将2D numpy数组沿z轴扩展为形状为(4,4,3)的3D数组
2D numpy数组沿z轴重复生成(4,4,3)形状3D数组的实现方法
核心思路:先给原2D数组在最后一维新增一个长度为1的轴,再沿该轴重复3次即可得到目标形状的数组。
方法1:使用np.repeat(逻辑更直观,推荐)
import numpy as np # 构造示例2D数组 arr = np.array([ [0, 2, 6, 3], [3, 7, 3, 9], [0, 8, 3, 4], [4, 6, 2, 1] ]) # 新增最后一维后沿z轴(axis=2)重复3次 arr_3d = np.repeat(arr[..., np.newaxis], 3, axis=2) print(arr_3d.shape) # 输出验证形状:(4, 4, 3) print(arr_3d)
arr[..., np.newaxis]的作用是将原(4,4)形状的2D数组升维为(4,4,1)的3D数组,再通过np.repeat指定沿第三个维度重复3次,完全匹配你需要的数值复制逻辑。
方法2:使用np.tile(调整参数即可实现)
你之前用np.tile未得到预期结果,大概率是没有先给原数组新增最后一维,正确写法如下:
arr_3d = np.tile(arr[..., np.newaxis], (1, 1, 3))
参数(1,1,3)表示前两个维度不做重复,仅第三个维度重复3次,输出结果和方法1完全一致。
内容的提问来源于stack exchange,提问作者Link An Jarad
相关产品推荐
相关产品推荐

