Вы можете получить места соответствующего значения (x==1
) и затем заменить, используя 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]])