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를 보면서 더 자세히 살펴봅시다.
shuffle의 parameter는 1개로 array 형태를 넣는 input 뿐입니다.
그러나 실행하다보면 눈에 띄는 점이 있는데 바로 operator 자체가 바로 in-place로 변수 자체에 저장이 된다는 점입니다.
제가 만든 예를 살펴보면 더 이해가 잘 갑니다.
np.random.shuffle(a)를 실행하는데 따로 반환받지 않았음에도 a에 shuffle 된 값이 저장됐음을 확인할 수 있습니다. 다시 말해 기존의 a는 사라짐을 알 수 있습니다.
permutation operator 역시 shuffle과 마찬가지로 1개의 parameter만 있지만 자세히 보면 int 또한 받을 수 있습니다.
그리고 int를 사용하면 np.arange(x)를 통해 shuffle 한다는 것을 확인할 수 있습니다.
또한 앞의 np.random.shuffle과 다르게 in-place가 아니기 때문에 변수에 바로 저장되지 않습니다. 때문에 섞인 array를 저장하고 싶다면 따로 변수를 받아야함을 알 수 있습니다.
아래 예를 보면 조금 더 이해가 될 것 같습니다.
보이는 것과 같이 a에 permutation이 저장되지 않음을 확인할 수 있습니다.
아마 변수를 따로 지정해서 저장하고 싶다면 permutation을 사용하는 것이 편하고
변수를 따로 저장하지 않고 바로 섞이길 원한다면 shuffle을 사용하는 것이 편할 것 같습니다.
상황에 맞게 operator를 사용하면 될 것 같습니다.
그럼 오늘도 Bye~