Für ein Array wie dieses:
import numpy as np
x = np.random.randint(0, 2, (5,5))
Wie kann ich die mit einer Wahrscheinlichkeit von 0,3 zufällig durch Zehner ersetzen? Dies ist etwas, was ich versucht habe, aber ich weiß nicht, ob es die beste Methode ist
mask = np.random.rand(5, 5)<0.3
x[x==1 * mask] = 10
Sie können die Stellen mit übereinstimmendem Wert ( x==1
) abrufen und dann ersetzen durch np.random.choice
:
import numpy as np
np.random.seed(1) ## fixing seed for replicability
x = np.random.randint(0, 2, (5,5))
Out[1]:
array([[1, 1, 0, 0, 1],
[1, 1, 1, 1, 0],
[0, 1, 0, 1, 1],
[0, 0, 1, 0, 0],
[0, 1, 0, 0, 1]])
x1, y1 = np.where(x==1)
replace_v = np.random.choice([1.,10.],len(x1), p=[0.7,0.3])
x[x1,y1] = replace_v
Out[2]:
array([[ 1, 1, 0, 0, 1],
[10, 1, 1, 10, 0],
[ 0, 10, 0, 10, 10],
[ 0, 0, 1, 0, 0],
[ 0, 1, 0, 0, 10]])
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen