파이썬으로 배열을 섞는 가장 쉬운 방법은 무엇입니까?
답변
import random
random.shuffle(array)
답변
import random
random.shuffle(array)
답변
from sklearn.utils import shuffle
X=[1,2,3]
y = ['one', 'two', 'three']
X, y = shuffle(X, y, random_state=0)
print(X)
print(y)
산출:
[2, 1, 3]
['two', 'one', 'three']
장점 : 매핑을 중단하지 않고 여러 어레이를 동시에 무작위로 지정할 수 있습니다. 그리고 ‘random_state’는 재현 가능한 동작에 대한 셔플 링을 제어 할 수 있습니다.
답변
다른 답변이 가장 쉽지만 random.shuffle
메서드가 실제로 아무것도 반환하지 않는 것은 다소 성가신 일입니다 . 주어진 목록을 정렬하는 것입니다. 호출을 연결하거나 셔플 배열을 한 줄로 선언하려면 다음을 수행하십시오.
import random
def my_shuffle(array):
random.shuffle(array)
return array
그런 다음과 같은 줄을 수행 할 수 있습니다.
for suit in my_shuffle(['hearts', 'spades', 'clubs', 'diamonds']):
답변
일반 파이썬 목록을 다룰 때 random.shuffle()
이전 답변과 같이 작업을 수행합니다.
그러나 ndarray
( numpy.array
)에 random.shuffle
관해서는, 원본을 깨뜨린 것 같습니다 ndarray
. 예를 들면 다음과 같습니다.
import random
import numpy as np
import numpy.random
a = np.array([1,2,3,4,5,6])
a.shape = (3,2)
print a
random.shuffle(a) # a will definitely be destroyed
print a
그냥 사용하십시오 : np.random.shuffle(a)
마찬가지로 random.shuffle
, np.random.shuffle
현재 위치에서 배열을 섞습니다.
답변
새로운 배열을 원한다면 다음을 사용할 수 있습니다 sample
.
import random
new_array = random.sample( array, len(array) )
답변
임의의 키로 배열을 정렬 할 수 있습니다
sorted(array, key = lambda x: random.random())
키는 한 번만 읽을 수 있으므로 정렬하는 동안 항목을 비교하는 것이 여전히 효율적입니다.
random.shuffle(array)
C로 작성된 이후 더 빠를 것 같습니다.