python - 在numpy数组中将每行的K个随机非零元素设置为零,矢量化解决方案
问题描述
我想以矢量化的方式将 numpy 数组的每一行的 K 个随机非零元素设置为零。
我的非矢量化代码如下所示,带有典型的输入和输出。
谢谢并恭祝安康,
伊格尔
orig_arr = np.array([[1, 1, 0, 1], [0, 0, 1, 1], [0, 1, 1, 1], [1, 1, 0, 0], [1, 1, 1, 1]])
k = 2
for i in range(len(orig_arr)):
this_row_elements = np.nonzero(orig_arr[i, :])[0]
sampled = random.sample(list(this_row_elements), k)
orig_arr[i, sampled] = 0
Before:
[[1 1 0 1]
[0 0 1 1]
[0 1 1 1]
[1 1 0 0]
[1 1 1 1]]
After:
[[0 1 0 0]
[0 0 0 0]
[0 0 1 0]
[0 0 0 0]
[0 1 0 1]]
解决方案
推荐阅读
- r - 从数据框中过滤不同的元素
- delphi - 我在哪里可以找到 Delphi 的 TPopupMenu 和 TMenuItem 组件编辑器?
- amazon-web-services - 来自 S3 的 AWS Redshift COPY csv
- javascript - 如何在 Jest 中使用 axios.create 测试外部模块返回的承诺?
- matplotlib - 更改 matplotlib 注释 arrowstyle 类属性
- java - Intellij IDEA 导入 checkstyle 方案无法正常工作
- kotlin - 接口中不允许使用属性初始化器
- python - 如何在 pytest 中的每次测试后完全拆除 Flask 应用程序?
- python - 访问当前行的索引值以在 Python 数据框中进行计算
- solr - 有没有使用 Solr 预先构建的简单搜索引擎?