Python - 如何在现有矩阵中随机添加 n 个零?

标签 python numpy

我有这个使用 default_rng 生成的数组:

import numpy as np
from numpy.random import default_rng
rng = default_rng(seed=10)
rng = rng.integers(1,20,(5,10))
rng

>>>array([[15, 19,  6,  4, 16, 16, 10,  3, 16, 10],
          [ 3,  3,  8, 14,  8, 16,  1,  9, 10, 19],
          [ 5, 16,  2,  7, 15, 11, 18, 15, 18, 16],
          [ 3, 18, 17,  3, 19, 15,  6,  3,  8, 18],
          [15,  5, 10, 17, 13,  6,  3, 19,  5, 10]], dtype=int64) 

我想使用 seed=5 的生成器在此矩阵中添加 10 个零。 我想创建一个维度为 [5,10] 的新数组,并在其中放入 10 个零,其余为一个,然后将两个数组相乘,但我必须使用生成器,所以我不能这样做。

最佳答案

尝试使用 np.random.choice 选择索引,然后将这些索引处的值设置为 0:

np.random.seed(10)
idx = np.random.choice(np.arange(5*10), size=5, replace=False)

rng.ravel()[idx] = 0

输出:

array([[15, 19,  6,  4, 16, 16, 10,  3, 16, 10],
       [ 3,  3,  8, 14,  8, 16,  1,  9, 10, 19],
       [ 5, 16,  2,  0, 15, 11, 18, 15, 18, 16],
       [ 3, 18, 17,  3, 19, 15,  6,  0,  8, 18],
       [15,  5,  0, 17,  0,  6,  3,  0,  5, 10]])

关于Python - 如何在现有矩阵中随机添加 n 个零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66675811/

相关文章:

python - 如何给difference_evolution添加几个约束?

python - 何时使用 .shape 何时使用 .reshape?

Python:从列表中产生增量以形成数组

python - 计算平方欧氏距离的可能优化

python - 如何将从命令行安装的 pip 模块添加到 PyDev 环境中?

python - 如何在 Django 中测试 celery period_task?

python - 使用 gdal 将数组转换为 tiff 光栅图像

python - Xgboost OneHotEncoding : merge numerical and encoded array

python - POST 或 GET 失败或成功时友好的返回消息

Python错误: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\cl.exe' failed with exit status 4