python求笛卡尔积

  数学 离散数学 Python    浏览次数:4908        分享
1

比如A=['a', 'b'], B=[1, 2, 3],笛卡尔积是[('a', 1), ('b', 1), ('a', 2), ('b', 2), ('a', 3), ('b', 3)] 

怎么用python求两个集合的笛卡尔积?

 

myodd   2018-11-25 12:28



   3个回答 
7

itertools是方便做循环的package

import itertools
result = list(itertools.product(*[A, B]))

得到的结果为

[('a', 1), ('a', 2), ('a', 3), ('b', 1), ('b', 2), ('b', 3)]


SofaSofa数据科学社区DS面试题库 DS面经

Jiho   2018-11-27 12:15

5

如果只是计算两个集合,可以直接用循环


[(x,y) for x in A for y in B]


如果多个集合计算笛卡尔积,itertools比较简明

SofaSofa数据科学社区DS面试题库 DS面经

feirie   2018-11-30 20:44

2


numpy.transpose([numpy.tile(x, len(y)), numpy.repeat(y, len(x))])


SofaSofa数据科学社区DS面试题库 DS面经

dizhouw2   2018-11-27 04:16

这个出来的结果好像int被转成了str类型了 - Jiho   2018-11-27 12:14


  相关讨论

python里如何判断一个集合是另一个集合的子集?

python中求两个集合的交集?

关于边的个数的图论问题

离散数学中偏序是什么意思?

python中计算二项式系数?

无环图和树有什么区别?

为什么图的拉普拉斯矩阵的最小特征值一定是0?

轮流射击先中枪的概率题

如何通俗地解释中餐馆过程(Chinese restaurant process)?

图里的强连通成分是什么意思?

  随便看看

机器学习中的奥卡姆剃刀原理是什么意思

序列的autocorrelation(自相关系数)的计算公式

matplotlib画图怎么确保横坐标和纵坐标的单位长度一致?

对于xgboost,还有必要做很多特征工程吗?

'numpy.ndarray' object has no attribute 'head'