2014-12-09 1 views
1

두리스트가 있고 다른리스트의 속성과 관련하여 하나의 값을 섞고 싶습니다. 예를 들어 :파이썬 : 다른 속성과 관련하여 셔플리스트

list1 = np.array([1,1,1, 2,2,2, 3,3,3]) # spaces for better understanding 
list2 = np.array([1,2,3, 4,5,6, 7,8,9]) 
result = [4,5,6, 1,2,3, 7,8,9] 

나는 목록 1의 속성이 함께하지 않을 때 그것은 경우에도 작동 할

y = split(list2, len(np.unique(list1))) 
np.random.shuffle(y) 
result = np.array(y).flatten() 

하여이 문제를 해결했다. 예 :

list1 = np.array([1,2,3,1,2,3,1,2,3]) 
list2 = np.array([1,2,3,4,5,6,7,8,9]) 
result = [2,1,3,5,4,6,8,7,9] 

답변

0

를 해결 :

uniques = np.unique(list1) 
shuffled = uniques.copy() 
np.random.shuffle(shuffled) 

result = list2.copy() 
for orig, new in zip(uniques, shuffled): 
    result[np.where(list1==orig)] = list2[np.where(list1==new)] 
관련 문제