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

如何用Numpy以特定规则拼接两个固定形状的数组?

Numpy无循环实现特定数组拼接

给定两个numpy数组:

  • frequencies:形状(2,),内容[100. 200.]
  • values:形状(4, 2),内容[[1. 2.],[3. 4.],[5. 6.],[7. 8.]]

需要生成形状为(4, 2, 2)的输出数组,结构如下:

[[[100.   1.]
  [200.   2.]]

 [[100.   3.]
  [200.   4.]]

 [[100.   5.]
  [200.   6.]]

 [[100.   7.]
  [200.   8.]]]

实现方法(无循环,向量化操作)

核心思路是扩展维度+广播+轴拼接,利用numpy原生向量化特性完成操作:

import numpy as np

# 定义输入数组
frequencies = np.array([100., 200.])
values = np.array([[1., 2.], [3., 4.], [5., 6.], [7., 8.]])

# 扩展frequencies维度:从(2,) → (1, 2, 1),支持广播到4个样本维度
freq_expanded = np.expand_dims(frequencies, axis=(0, 2))
# 扩展values维度:从(4, 2) → (4, 2, 1)
vals_expanded = np.expand_dims(values, axis=2)

# 在最后一个轴拼接数组,得到目标形状(4,2,2)
out = np.concatenate([freq_expanded, vals_expanded], axis=2)

验证结果

执行代码后,输出完全符合需求:

print(out.shape)  # 输出 (4, 2, 2)
print(out)
# 输出结构与预期一致的数组

原理说明

  • np.expand_dims为数组添加维度,让两个数组维度对齐到3维
  • numpy广播机制自动将freq_expanded的(1,2,1)形状扩展为(4,2,1),与vals_expanded形状匹配
  • np.concatenate在指定轴完成拼接,最终生成目标结构

内容的提问来源于stack exchange,提问作者Michael I.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 16:39:21