С маскировка .Сначала мы генерируем матрицу с такими же размерами случайных чисел и проверяем, больше ли они 0.8
:
mask = np.random.random(a.shape) > 0.8
Теперь мы можем присвоить значения b
, где mask
равно True
к соответствующим индексам a
:
a[mask] = b[mask]
Например:
>>> a
array([[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]])
>>> b
array([[2, 3, 4, 5],
[6, 7, 8, 9],
[0, 2, 3, 4]])
>>> mask = np.random.random(a.shape) > 0.8
>>> mask
array([[ True, False, False, False],
[ True, False, False, False],
[False, False, False, False]])
>>> a[mask] = b[mask]
>>> a
array([[2., 1., 1., 1.],
[6., 1., 1., 1.],
[1., 1., 1., 1.]])
Итак, где mask
равно True
(поскольку 0.8
довольномаксимум, мы ожидаем в среднем 2,4 таких значений), присваиваем соответствующее значение b
.