말 2와 8의 모든 가능한 조합의 목록 (또는 배열)을 효율적으로 생성하는 방법이 있습니까? 예 :0과 b의 모든 가능한 조합 생성
[[0,0,0,0,0,0,0,0,1,1],
[0,0,0,0,0,0,0,1,0,1,],
...]
이 방법이 효과적 일 수 있습니까?
import numpy as np
result = []
for subset in itertools.combinations(range(10), 2):
subset = list(subset)
c = np.zeros(10)
c[subset] = 1
result.append(c)
이 코드를 최적화하는 방법에 대한 아이디어가 있습니다.
감사합니다. 이것은 잘 작동하는 것 같습니다. 시간 (원래 솔루션) : 13.2389998436 시간 (np.arange) : 1.6970000267 – furukama
환상적인 색인 생성을 멋지게 사용하십시오! FWIW np.fromiter (조합 (범위 (55), 5), np.dtype ("i4, i4, i4, i4, i4"), 3478761) .view ("i4"). '는 목록을 먼저 작성하는 것보다 약 1.7 배 빠르지 만 작은 크기의 경우 장점이 없습니다. – Jaime
@Jaime 타이밍을 내 주셔서 감사합니다. 그러나 Python 2.7 또는 3.4에서 속도 향상 기능을 재현 할 수 없습니다. 어쩌면 최근 버전의 Numpy가 변경되었을 수도 있습니다. – Veedrac