임의의 열을 갖는 3xn 행렬을 생성해야 각 열에 동일한 번호가 두 번 이상 포함되지 않습니다. 내가 기대 출력을 제공임의의 열에서 두 번째 numpy 배열 생성
n=10
set = np.arange(0, 10)
matrix = np.random.choice(set, size=3, replace=False)[:, None]
for i in range(n):
column = np.random.choice(set, size=3, replace=False)[:, None]
matrix = np.concatenate((matrix, column),axis=1)
print matrix
:
[[2 1 7 2 1 9 7 4 5 2 7]
[4 6 3 5 9 8 1 3 8 4 0]
[3 5 0 0 4 5 4 0 2 5 3]]
그러나,이 코드가 충분히 빠르게 작동하지 않는 것 같습니다 저는 현재 아래의 코드를 사용하고 있습니다. 나는 cython을 사용하여 for 루프를 구현하는 것이 도움이 될 수 있다는 것을 알고 있지만, 파이썬에서이 코드를 작성하는 데 더 좋은 방법이 있는지 알고 싶습니다.
얼마나 큰 의지'실제 응용 프로그램에서 수 n'? –
루프 내부에서'matrix = np.concatenate ((matrix, column), axis = 1)'을하지 마십시오. 열의 파이썬 목록을 작성한 다음 루프 다음에 열 목록을 배열로 변환하십시오. 파이썬리스트에 추가하는 것은 numpy 배열을 반복적으로 연결하는 것보다 훨씬 효율적입니다. –