我有两个列表,我希望将一个值中的值改为另一个中的属性。例如:
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]
答案 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)]