numpy.random.permutation(x)

시퀀스를 무작위로 치환하거나 치환된 범위를 반환해 주는 함수이다.

 

Parameter 

  • x : int or array_like

Returns

  • out : ndarray

input인 x는 2가지가 들어갈 수 있다.

 

첫 번째는 int가 들어갈 수 있다. 함수는 이를 범위로 인식하고 범위에 해당하는 정수형 ndarray배열을 무작위로 섞어서 반환한다.

 

다음은 10을 넣었을 때의 예제이다.

import numpy as np

per = np.random.permutation(10)

#결과
array([8, 7, 4, 3, 2, 9, 0, 1, 5, 6])

 

두 번째 input으로는 array_like가 들어갈 수 있다. 이는 array_like의 원소를 랜덤 하게 섞어서 ndarray의 형태로 반환하여 준다.

 

다음은 리스트를 넣었을 때의 예제이다.

per = np.random.permutation([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

#결과
array([3, 1, 6, 5, 7, 8, 9, 0, 4, 2])

 

또한 x는 다차원 배열이 들어갈 수도 있다. 그러나 이렇게 되면 가장 처음에 있는 차원을 기준으로만 섞이게 된다.

 

다음은 3x3 배열과 3x3x3배열의 예제이다.

arr1 = np.arange(9).reshape((3,3))
arr2 = np.arange(27).reshape((3,3,3))

arr1

#결과
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
       
arr2

#결과
array([[[ 0,  1,  2],
        [ 3,  4,  5],
        [ 6,  7,  8]],

       [[ 9, 10, 11],
        [12, 13, 14],
        [15, 16, 17]],

       [[18, 19, 20],
        [21, 22, 23],
        [24, 25, 26]]])
        
np.random.permutation(arr1)

#결과
array([[3, 4, 5],
       [6, 7, 8],
       [0, 1, 2]])
       
np.random.permutation(arr2)

#결과
array([[[18, 19, 20],
        [21, 22, 23],
        [24, 25, 26]],

       [[ 0,  1,  2],
        [ 3,  4,  5],
        [ 6,  7,  8]],

       [[ 9, 10, 11],
        [12, 13, 14],
        [15, 16, 17]]])

3x3 메트릭스인 arr1은 맨 앞인 행을 기준으로 랜덤 하게 바뀌는 것을 확인 가능하며 뒤의 열은 섞이지 않는 것을 확인 가능하다.

 

3x3x3 텐서인 arr2는 뒤의 3x3 메트릭스는 바뀌지 않는 것을 확인 가능하며 3개의 메트릭스의 순서만 바뀌는 것을 확인 가능하다.

'Python > numpy' 카테고리의 다른 글

array_like 데이터 타입(data type)  (0) 2022.03.09
난수 생성 - np.random.seed, np.random.RandomState  (0) 2022.03.08

+ Recent posts