如何在 python 中将矩阵作为笛卡尔积中的向量列表传递

How to pass a matrix as a list of vectors in a cartesian product in python

我正在尝试从一系列向量创建组合矩阵。如果我希望所有向量都包含在组合中,我会使用:

CombinatoricsMatrix = list(itertools.product(vector1, vector2, ...)

CombinatoricsMatrix  = cartesian((vector1, vector2))

如果

vector1 = [a]
vector2 = [1,2]
CombinatoricsMatrix  = cartesian((vector1, vector2))
CombinatoricsMatrix = [a,1; a,2]

但是,我想将一些矩阵作为 'a list of vectors' 传递,以便这些向量的元素不包含在组合中。

例如如果

matrix3 = [w,x; y,z]

所需的输出是

CombinatoricsMatrix  = cartesian((vector1, vector2, matrix3 ))
CombinatoricsMatrix = [a,1,[w,x]; a,1,[y,z]; a,2,[w,x]; a,2,[y,z]]

有什么想法吗?请注意,示例中向量的长度和数量都保持较短。

可能有更多 pythonic 方法可以做到这一点,但一种解决方案是压缩矩阵,使得

CombinatoricsMatrix  = list(itertools.product(vector1, vector2, zip(matrix3))