samedi 19 juin 2021

Conditional Numpy shuffling

Problem
Assume you have a structured np.array as such:

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

and you would like to create a new np.array of same size, but shuffled.

E.g.

second_array = np.random.shuffle(first_array)

second_array 
# np.array([3, 2, 9, 5, 6, 1, 1, 6, 9, 7, 8, 5, 2, 7, 8, 3, 4, 4])
                      

So far, so good. However, random shuffling leads to some duplicates being very close to each other, which is something I'm trying to avoid.

Question
How do I shuffle this array so that the integer order is pseudo-random but so that each duplicate has high probability to be very distant to each other? Is there a more specific term for this problem?




Aucun commentaire:

Enregistrer un commentaire