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

Python中如何正确生成二维数组各子数组元素的所有组合

问题根因

np.meshgrid() 要求传入多个独立的数组作为位置参数,直接传入存储子数组的列表时,函数会将整个列表识别为单个输入参数,不会自动拆分列表内的子数组,因此生成的网格结果不符合预期。

修正方案

使用Python的参数解包操作符*,将列表内的子数组拆分为独立参数传入meshgrid即可,和传入独立声明数组的逻辑完全一致:

import numpy as np
multi = [np.array([1,2]), np.array([3,4]), np.array([5,6])]
combination = np.array(np.meshgrid(*multi)).T.reshape(-1, len(multi))

运行上述代码可以得到完全符合预期的结果:

array([[1, 3, 5],
       [1, 3, 6],
       [1, 4, 5],
       [1, 4, 6],
       [2, 3, 5],
       [2, 3, 6],
       [2, 4, 5],
       [2, 4, 6]])

替代实现

如果不需要强制使用meshgrid,也可以用Python标准库itertools.product直接计算多个可迭代对象的笛卡尔积,写法更直观:

import numpy as np
from itertools import product
multi = [np.array([1,2]), np.array([3,4]), np.array([5,6])]
combination = np.array(list(product(*multi)))

输出结果和上述方案完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 11:45:29