티스토리 뷰

Python

[Numpy] permutation

Dotori.ai 2022. 4. 17. 18:48

Stochastic Gradient Descent(SGD) 에서 dataset을 shuffle하기 위해 사용된 permutation 함수를 정리한다.

 

Permutation

sequence를 무작위로 재배치하거나 재배치된 range를 반환하는 역할을 해준다.

 

매개변수

random.Generator.permutation(x, axis=0)

  • x: int 또는 array_like
    x가 integer 이면, np.arange(x)를 무작위로 재배치한다.
    x가 array이면, 복사본을 생성 후 원소들을 무작위로 재배치한다.
  • axis
    x가 셔플되는 축이다. default 는 0이다.

반환

  • out: ndarray
    재배치된 sequence나 array range가 반환된다.

예제

x : int인 경우

rng = np.random.default_rng()
rng.permutation(10)
array([1, 7, 4, 3, 0, 9, 2, 5, 8, 6]) # random

x: array인 경우

rng.permutation([1, 4, 9, 12, 15])
array([15,  1,  9,  4, 12]) # random

x: 2차원 array인 경우

arr = np.arange(9).reshape((3, 3))
rng.permutation(arr)
array([[6, 7, 8], # random
       [0, 1, 2],
       [3, 4, 5]])

axis = 1인 경우

x가 셔플 되는 축을 변경하기 위하여 사용하나, permutation 이 전체 배열 요소를 재배치 하므로 크게 달라지는 부분은 없다. 여기서는 사용 예와 결과만 확인하고 넘어간다.

arr = np.arange(9).reshape((3, 3))
rng.permutation(arr, axis=1)
array([[0, 2, 1], # random
       [3, 5, 4],
       [6, 8, 7]])

'Python' 카테고리의 다른 글

[Numpy] meshgrid  (0) 2022.04.09