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

如何无需循环,用一维NumPy数组填充不同维度的多维数组?

无需循环的NumPy数组填充方案

要实现将一维数组data(长度100)填充到形状为(100, 10, 10)的数组all2中(使每个all2[i, j, k]等于data[i]),完全可以不用三重循环,以下是几种高效优雅的实现方式:

方法1:利用NumPy广播机制(推荐)

通过给data增加两个单维度,让其形状变为(100, 1, 1),赋值时NumPy会自动将其广播到目标数组的形状,这种方式无需额外复制数据,性能最优:

import numpy as np

data = np.arange(0, 100)
all2 = np.empty((100, 10, 10))
# 两种维度扩展方式任选其一
all2[:] = data[:, np.newaxis, np.newaxis]
# 或者
# all2[:] = data.reshape(100, 1, 1)

方法2:使用np.tile函数

tile函数可以将数组按指定次数重复,先把data调整为(100,1,1)的形状,再在第2、3维度各重复10次:

import numpy as np

data = np.arange(0, 100)
all2 = np.tile(data.reshape(100, 1, 1), (1, 10, 10))

方法3:使用np.repeat函数

通过两次repeat操作,分别在第2、3维度重复数据:

import numpy as np

data = np.arange(0, 100)
# 先在第2维度重复10次,再在第3维度重复10次
all2 = np.repeat(np.repeat(data.reshape(100, 1), 10, axis=1), 10, axis=2)

以上三种方法都能替代三重循环,其中广播机制的内存效率最高,是最推荐的实现方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 19:02:44