web-dev-qa-db-fra.com

np.random.permutation avec graine?

Je veux utiliser une graine avec np.random.permutation, comme

np.random.permutation(10, seed=42)

Je reçois l'erreur suivante:

"permutation() takes no keyword arguments"

Comment puis-je faire cela? Merci.

3
Rockbar

Si vous le souhaitez sur une ligne, vous pouvez créer une nouvelle RandomState et appeler la permutation à ce sujet:

np.random.RandomState(seed=42).permutation(10)

C'est mieux que de simplement définir la valeur de départ de np.random, car cela n'aura qu'un effet localisé.

16
Sebastian
np.random.seed(42)
np.random.permutation(10)

Si vous souhaitez appeler np.random.permutation(10) plusieurs fois et obtenir des résultats identiques, vous devez également appeler np.random.seed(42) chaque fois que vous appelez permutation().

Par exemple,

np.random.seed(42)
print(np.random.permutation(10))
print(np.random.permutation(10))

produira des résultats différents:

[8 1 5 0 7 2 9 4 3 6]
[0 1 8 5 3 4 7 9 6 2]

tandis que

np.random.seed(42)
print(np.random.permutation(10))
np.random.seed(42)
print(np.random.permutation(10))

donnera le même résultat:

[8 1 5 0 7 2 9 4 3 6]
[8 1 5 0 7 2 9 4 3 6]
9
Giorgos Myrianthous

Définir la graine dans la ligne précédente

np.random.seed(42)
np.random.permutation(10)
2
James

Vous pouvez le décomposer en:

import numpy as np
np.random.seed(10)
np.random.permutation(10)

En initialisant la graine aléatoire en premier, vous obtiendrez la même permutation.

0
Danilo Pena