아이공의 AI 공부 도전기

numpy.random.shuffle, numpy.random.permutation 알아보기

numpy 1.18 

numpy.random.shuffle

https://numpy.org/doc/stable/reference/random/generated/numpy.random.shuffle.html

numpy.random.permutation

https://numpy.org/doc/stable/reference/random/generated/numpy.random.permutation.html?


array를 섞고자 할 때 numpy에서는 shuffle과 permutation operation을 제공합니다. 

그런데 막상 사용하다보면 이 둘 모두 큰 차이가 없다고 느껴집니다. 

그러나 자세히보면 약간의 차이를 살펴볼 수 있습니다.

parameter를 보면서 더 자세히 살펴봅시다.

numpy.random.shuffle 


shuffle의 parameter는 1개로 array 형태를 넣는 input 뿐입니다.

그러나 실행하다보면 눈에 띄는 점이 있는데 바로 operator 자체가 바로 in-place로 변수 자체에 저장이 된다는 점입니다.

제가 만든 예를 살펴보면 더 이해가 잘 갑니다.

np.random.shuffle(a)를 실행하는데 따로 반환받지 않았음에도 a에 shuffle 된 값이 저장됐음을 확인할 수 있습니다. 다시 말해 기존의 a는 사라짐을 알 수 있습니다.

numpy.random.permutation

permutation operator 역시 shuffle과 마찬가지로 1개의 parameter만 있지만 자세히 보면 int 또한 받을 수 있습니다.

그리고 int를 사용하면 np.arange(x)를 통해 shuffle 한다는 것을 확인할 수 있습니다.

또한 앞의 np.random.shuffle과 다르게 in-place가 아니기 때문에 변수에 바로 저장되지 않습니다. 때문에 섞인 array를 저장하고 싶다면 따로 변수를 받아야함을 알 수 있습니다.

아래 예를 보면 조금 더 이해가 될 것 같습니다.


보이는 것과 같이 a에 permutation이 저장되지 않음을 확인할 수 있습니다.


아마 수를 따로 지정해서 저장하고 싶다면 permutation을 사용하는 것이 편하고 

변수를 따로 저장하지 않고 바로 섞이길 원한다면 shuffle을 사용하는 것이 편할 것 같습니다.


상황에 맞게 operator를 사용하면 될 것 같습니다.


그럼 오늘도 Bye~


공유하기

facebook twitter kakaoTalk kakaostory naver band
loading