python:关于其他属性的shuffle列表

时间:2014-12-09 12:32:57

标签: python random shuffle

我有两个列表,我希望将一个值中的值改为另一个中的属性。例如:

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]

我通过

解决了这个问题
y = split(list2, len(np.unique(list1)))
np.random.shuffle(y)
result = np.array(y).flatten()

我希望它也适用于list1中的属性不在一起的情况。例如:

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]

1 个答案:

答案 0 :(得分: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)]