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

Numpy如何将(N,)维度向量插入(N,M,D)数组的D轴以得到(N,M,D+1)数组

绝对有更简洁高效的Numpy实现方式!核心是利用维度扩展和广播机制,不用手动初始化新数组再逐个赋值,一行代码就能搞定需求。

核心思路

你的需求是把形状为(N,)的b,按元素追加到a(形状(N,4096,6))的最后一维。关键是让b的形状能和a的前两维匹配——只需要给b扩展两个新维度,变成(N,1,1),Numpy的广播规则会自动把它“拉伸”成(N,4096,1),完美适配拼接要求。

实现代码

先贴出完整的示例代码:

import numpy as np

# 创建测试数据
N = 20
a = np.random.rand(N, 4096, 6)
b = np.random.rand(N,)

# 一行代码完成拼接
c = np.concatenate([a, b[:, np.newaxis, np.newaxis]], axis=-1)

这里np.newaxis可以用None替代,写法更简洁:b[:, None, None],功能完全一致。

验证结果

我们可以快速验证是否符合要求:

# 检查输出形状是否正确
assert c.shape == (20, 4096, 7)
# 确认前6维与原数组a完全一致
assert np.all(c[..., :-1] == a)
# 确认最后一维等于对应的b元素(利用广播匹配维度)
assert np.all(c[:, :, -1] == b[:, np.newaxis])

替代方案(可选)

如果你觉得concatenate不够直观,也可以用np.append实现(内部本质还是调用concatenate):

c = np.append(a, b[:, None, None], axis=-1)

⚠️ 注意:不要用np.tile来重复b的元素——虽然也能得到结果,但会额外复制大量数据,当4096这个维度很大时,会造成明显的内存浪费,效率远不如广播方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:57:39