Numpy数组扩展维度与重复的最优方法:形状从(1,5)到(1,4,5)
替代实现方案
当然有其他几种简洁的实现方式,以下是常见方案:
利用NumPy广播机制(最简洁)
广播会自动处理维度扩展与重复,无需显式调用repeat:# 方式1:用np.newaxis扩展维度后直接运算 arr2 = arr[:, np.newaxis, :] / 4 # 方式2:用reshape扩展维度 arr2 = arr.reshape(1, 1, 5) / 4原理:
(1,1,5)形状的数组会被广播至(1,4,5),自动填充重复的维度。使用np.tile进行数组重复
tile适合按指定次数重复整个数组,可先缩放再重复:# 先缩放原数组,再在axis=1维度重复4次 arr2 = np.tile(arr / 4, (1, 4, 1))也可以先扩展维度再tile后缩放,效果一致。
使用np.broadcast_to显式广播
先创建缩放后的数组,再通过broadcast_to直接生成目标形状的数组:arr_scaled = arr / 4 arr2 = np.broadcast_to(arr_scaled[:, np.newaxis, :], (1, 4, 5))
内容的提问来源于stack exchange,提问作者Jerry
相关产品推荐
相关产品推荐

