2013-06-18 2 views
1

파이썬 스크립트에서 동적 프로그래밍을 사용해야합니다.파이썬에서 N-K 행렬의 K-uplets 전체를 반복하십시오.

모양 = (N, K) 인 numpy 배열 u를 정의했습니다. 각 열에 대해 하나의 요소를 선택하여 K- 상체를 생성하고 싶습니다.

이렇게 생성 된 모든 K-uplets에서 루프를 효율적으로 진행 하시겠습니까? 용액을 사용하는 것

import itertools 
itertools.combination_with_replacement(list,K) 

여기서 목록 = 0..N-1]하지만 반복적 itertools 방법의 출력 (인덱스)를 사용하여 내 K-uplets 각각 구축해야 할 것이다. 더 직접적인 방법이 있습니까?

감사

빈센트

당신은 arr[ind, np.arange(K)]와 K-uplet을 구축 할 수 있습니다

답변

0

. 물론 실제로는 NumPy ndarray입니다. 튜플을 원한다면 튜플렛으로 변환하기가 쉽습니다 : tuple(arr[ind, np.arange(K)]).


import numpy as np 
import itertools as IT 

N, K = 5,3 
arr = np.arange(N*K).reshape(N,K) 
print(arr) 
# [[ 0 1 2] 
# [ 3 4 5] 
# [ 6 7 8] 
# [ 9 10 11] 
# [12 13 14]] 

for ind in IT.combinations_with_replacement(range(N), K): 
    print(arr[ind, np.arange(K)]) 
    # [0 1 2] 
    # [0 1 5] 
    # [0 1 8] 
    # [ 0 1 11] 
    # ... 
+0

들으! 그게 내가 찾고 있었던 바로 그거야. – Vincent