본문 바로가기
파이썬

파이썬 How to randomly shuffle data and target in python?

by º기록 2020. 11. 10.
반응형

크기가 (image_number, channels, width, height)에 해당하는 4D 배열 훈련 이미지가 있습니다. 또한 차원이 (image_number, class_number)에 해당하는 2D 대상 레이블이 있습니다. 훈련 할 때 random.shuffle을 사용하여 데이터를 무작위로 섞고 싶지만, 내 이미지의 동일한 순서로 레이블을 섞을 수있는 방법은 무엇입니까? 고마워!

 

해결 방법

 

numpy 전용 솔루션을 원하면 두 배열에 동일한 이미지 번호가 있다고 가정하고 첫 번째 배열에서 두 번째 배열을 다시 색인화 할 수 있습니다.

In [67]: train = np.arange(20).reshape(4,5).T

In [68]: target = np.hstack([np.arange(5).reshape(5,1), np.arange(100, 105).reshape(5,1)])

In [69]: train
Out[69]:
array([[ 0,  5, 10, 15],
       [ 1,  6, 11, 16],
       [ 2,  7, 12, 17],
       [ 3,  8, 13, 18],
       [ 4,  9, 14, 19]])

In [70]: target
Out[70]:
array([[  0, 100],
       [  1, 101],
       [  2, 102],
       [  3, 103],
       [  4, 104]])

In [71]: np.random.shuffle(train)

In [72]: target[train[:,0]]
Out[72]:
array([[  2, 102],
       [  3, 103],
       [  1, 101],
       [  4, 104],
       [  0, 100]])

In [73]: train
Out[73]:
array([[ 2,  7, 12, 17],
       [ 3,  8, 13, 18],
       [ 1,  6, 11, 16],
       [ 4,  9, 14, 19],
       [ 0,  5, 10, 15]])

 

참조 페이지 https://stackoverflow.com/questions/35076223

 

 

반응형

댓글