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

如何将给定数组扩展为(3,3,4)形状?寻求更简洁的Numpy实现

更简洁的Numpy实现方式:创建(3,3,4)重复数组

你可以用以下几种更简洁的方式替代多次调用np.repeat():

方法1:使用np.tile()(最直观)

np.tile()专门用于按指定次数重复数组,只需一次调用就能完成多维度的重复操作:

import numpy as np

start = np.linspace(start=10, stop=40, num=4)
arr = np.tile(start, (3, 3, 1))  # 前两个维度各重复3次,最后一个维度保持1次(不重复)

这里(3,3,1)表示在原数组的基础上,依次在第0轴、第1轴、第2轴重复3次、3次、1次,直接得到形状为(3,3,4)的数组。

方法2:利用广播机制(内存更高效)

如果不需要实际复制数据(仅用于读取操作),可以用np.broadcast_to()实现零拷贝的维度扩展;如果需要可修改的数组,再调用.copy():

import numpy as np

start = np.linspace(start=10, stop=40, num=4)
# 先将start扩展为(1,1,4)的形状,再广播到(3,3,4)
arr = np.broadcast_to(start.reshape(1, 1, -1), (3, 3, 4))
# 如果需要可修改的数组:
# arr = np.broadcast_to(start.reshape(1,1,-1), (3,3,4)).copy()

广播机制不会额外占用内存(直到你修改数组),适合处理大规模数据场景。

方法3:链式调用np.repeat()(简化版原逻辑)

也可以将两次repeat操作链式写在一起,减少一次中间赋值:

import numpy as np

start = np.linspace(start=10, stop=40, num=4)
# 先扩展为(1,1,4),依次在第0轴、第1轴重复3次
arr = np.repeat(np.repeat(start[np.newaxis, np.newaxis, :], 3, axis=0), 3, axis=1)

以上三种方法最终输出的结果和你原代码完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 10:53:30