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

如何从一维NumPy数组创建指定形状的三维数组?

从一维数组生成指定形状的多维数组

给定一维数组:

import numpy as np
a = np.array([1, 2, 3])

需要生成形状为(3, 4, 5)的数组b,要求用a中的每个值初始化一个4×5的数组并堆叠,且避免使用循环。目标数组b的结构如下:

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

方法1:利用广播机制(推荐,内存高效)

通过扩展a的维度,再借助NumPy的广播特性自动填充:

# 将a从(3,)扩展为(3,1,1)
a_expanded = a.reshape(3, 1, 1)
# 广播到目标形状(3,4,5)
b = np.broadcast_to(a_expanded, (3, 4, 5))

这种方法不会复制额外数据,内存占用更小。

方法2:使用np.tile重复元素

通过tile函数在指定维度上重复元素:

# 先扩展a的维度为(3,1,1),再在第1轴重复4次、第2轴重复5次
b = np.tile(a.reshape(3,1,1), (1, 4, 5))

方法3:与全1数组相乘

创建(4,5)的全1数组,和扩展维度后的a相乘实现填充:

b = a.reshape(3,1,1) * np.ones((4,5), dtype=a.dtype)

以上三种方法都能得到符合要求的数组b,且全程无需循环操作。

内容的提问来源于stack exchange,提问作者J. Daay

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 08:28:32