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

如何将形状为(m,n)的Numpy数组转换为形状(m,n,l)的同值扩展数组?

解决方案:将(m,n) Numpy数组转换为(m,n,l)数组

你需要将原数组的每个元素在最后一个维度上重复l次,以下是几种简洁的实现方式,包括单行方案:

方法1:np.expand_dims + np.repeat(直观高效)

这是最直接的单行实现,先给原数组增加一个长度为1的最后维度,再沿该维度重复l次:

import numpy as np

m = 2
n = 3
l = 2
a = np.array([[1,2,3],[4,5,6]])

b = np.repeat(np.expand_dims(a, axis=-1), l, axis=-1)

运行结果符合预期:

array([[[1, 1],
        [2, 2],
        [3, 3]],

       [[4, 4],
        [5, 5],
        [6, 6]]])

方法2:np.tile + 维度扩展

利用np.tile实现重复操作,同样是单行代码:

b = np.tile(a[..., np.newaxis], (1, 1, l))

其中a[..., np.newaxis]是np.expand_dims(a, axis=-1)的简写,先将数组转为(m,n,1)形状,再在最后一个维度复制l次。

方法3:广播视图(无额外内存开销)

如果不需要修改数组内容,仅需该形状的视图,可以用np.broadcast_to,不会额外占用内存:

b = np.broadcast_to(a[..., None], (m, n, l))

注意:此方法生成的是原数组的视图,修改b会同步修改原数组a;若需要独立的数组对象,优先选择前两种方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 12:01:11