计算 Python 中的笛卡尔积
Calculating Cartesian product in Python
有2个相同的数组,A=np.array(['A','B','C']),B=np.array(['A','B','C']),我计算了A和B的笛卡尔积:
import numpy as np
from itertools import product
b=product(A,B)
b的结果是
[('A','A'),('A','B'),('A','C'),('B','A'),('B','B'),('B','C'),('C','A'),('C','B'),('C','C)]
在我的项目中,('A','B')的含义与('B','A')的含义相同,如何删除重复的乙?我想让b只保留('A','B'), ('A','C'), ('B','C')。谢谢!
您可以在单个数组上使用 combinations_with_replacement
:
from itertools import combinations_with_replacement
list(combinations_with_replacement(A, r=2))
输出:
[('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'B'), ('B', 'C'), ('C', 'C')]
排除自身组合:
from itertools import combinations
list(combinations(A, r=2))
输出:
[('A', 'B'), ('A', 'C'), ('B', 'C')]
有2个相同的数组,A=np.array(['A','B','C']),B=np.array(['A','B','C']),我计算了A和B的笛卡尔积:
import numpy as np
from itertools import product
b=product(A,B)
b的结果是
[('A','A'),('A','B'),('A','C'),('B','A'),('B','B'),('B','C'),('C','A'),('C','B'),('C','C)]
在我的项目中,('A','B')的含义与('B','A')的含义相同,如何删除重复的乙?我想让b只保留('A','B'), ('A','C'), ('B','C')。谢谢!
您可以在单个数组上使用 combinations_with_replacement
:
from itertools import combinations_with_replacement
list(combinations_with_replacement(A, r=2))
输出:
[('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'B'), ('B', 'C'), ('C', 'C')]
排除自身组合:
from itertools import combinations
list(combinations(A, r=2))
输出:
[('A', 'B'), ('A', 'C'), ('B', 'C')]