python - 在python中随机将矩阵中一定百分比的行归零
问题描述
假设我有一个包含 5 行 4 列的矩阵:
arr = [[1,1,1,1],
[2,2,2,2],
[3,3,3,3],
[4,4,4,4],
[5,5,5,5]]
我想随机零=输出/屏蔽这个矩阵的一定百分比。因此,如果我将百分比设置为零,则为 40%。我会得到以下信息:
arr = [[0,0,0,0],
[2,2,2,2],
[3,3,3,3],
[0,0,0,0],
[5,5,5,5]]
什么是实现这一目标的好方法?谢谢!
解决方案
完成任务的一种方法是遵循(set num_zero_rows
):
import random
arr = [[1,1,1,1],
[2,2,2,2],
[3,3,3,3],
[4,4,4,4],
[5,5,5,5]]
num_zero_rows = 2
zero_idxs = set(random.sample(range(len(arr)), num_zero_rows))
arr = [([0] * len(arr[i]) if i in zero_idxs else arr[i])
for i in range(len(arr))]
print(arr)
输出:
[[0, 0, 0, 0], [2, 2, 2, 2], [0, 0, 0, 0], [4, 4, 4, 4], [5, 5, 5, 5]]
或者相同代码的更短/更清洁/更快的变体:
import random
arr = [[1,1,1,1],
[2,2,2,2],
[3,3,3,3],
[4,4,4,4],
[5,5,5,5]]
num_zero_rows = 2
for i in random.sample(range(len(arr)), num_zero_rows):
arr[i] = [0] * len(arr[i])
print(arr)
推荐阅读
- c# - C#:实现接口的类的对象大小
- excel - 使用 VBA 将 excel 文件另存为 pdf 到本地驱动器
- sql - Informatica,使用来自另一个表的输入创建新表
- reactjs - React-router- 更改获取数据的 url
- windows - 使用 dup2 或类似方法重定向文件句柄
- javascript - 使用 Angular 4 订阅的行为主题
- c++ - 使用 QSerialPort 发送批量短信的延迟
- scala - 带有比较和循环的 Scala 内联追加
- javascript - 如何在 URL 中使用带有井号标签的 GET 方法?
- powershell - 另一个具有相同属性 identifierUris 值的对象已经存在