[python] 파이썬으로 배열을 섞고, 파이썬으로 배열 항목 순서를 무작위로 지정하십시오.

파이썬으로 배열을 섞는 가장 쉬운 방법은 무엇입니까?



답변

import random
random.shuffle(array)


답변

import random
random.shuffle(array)


답변

sklearn을 사용하여 이것을 수행하는 다른 방법

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로 작성된 이후 더 빠를 것 같습니다.