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

Python:如何合并两个NumPy数组以生成指定全组合二维数组?

生成两个NumPy数组的笛卡尔积

嘿,你想要的其实是两个一维数组的笛卡尔积(也就是所有元素的两两组合),NumPy里有几种简洁的方式可以实现,不用手动写循环拼接,效率还高!

方法1:兼容大多数NumPy版本(推荐)

如果你的NumPy版本比较旧(低于1.25),可以用np.meshgrid配合重塑形状来实现:

import numpy as np

# 定义输入数组
a = np.arange(3).reshape(3)
b = np.arange(3).reshape(3)

# 生成笛卡尔积
result = np.array(np.meshgrid(a, b)).T.reshape(-1, 2)

print(result)

运行后输出就是你要的:

[[0 0]
 [0 1]
 [0 2]
 [1 0]
 [1 1]
 [1 2]
 [2 0]
 [2 1]
 [2 2]]

原理说明

  • np.meshgrid(a, b)会生成两个3x3的二维数组,分别对应a的元素重复列、b的元素重复行
  • .T转置后,每个位置的元素对就是我们需要的配对
  • .reshape(-1, 2)把二维数组扁平成N行2列的结果,自动计算行数

方法2:NumPy 1.25+ 更直观的方式

如果你的NumPy版本是1.25及以上,可以直接用专门的np.cartesian_product函数,一步到位:

import numpy as np

a = np.arange(3).reshape(3)
b = np.arange(3).reshape(3)

result = np.cartesian_product(a, b)

print(result)

这个函数就是专门用来生成多个数组的笛卡尔积的,代码更易读,结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:40:26