2016-08-07 6 views
0

일련의 벡터에서 조합 행렬을 생성하려고합니다. 나는 조합에 포함되는 모든 벡터를 원한다면 내가 사용합니다 :파이썬의 데카르트 제품에서 벡터 목록으로 행렬을 전달하는 방법

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

또는

CombinatoricsMatrix = cartesian((vector1, vector2)) 

을 같은 그

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

그러나, 내가 원하는 어떤 행렬에있을 경우 '벡터 목록'으로 전달하여 해당 벡터의 요소가 조합에 포함되지 않도록합니다.

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]] 

어떤 아이디어가 있는지? 이 예제에서는 벡터의 길이와 양이 짧았습니다.

답변

0

가능성이 작업을 수행하는 더 파이썬 가지 방법이 있지만 하나 개의 솔루션은 매트릭스를 압축하는 등의

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