python - 具有选择性条件的 Numpy 改组?
问题描述
我想用一个条件来洗牌一个 2d Numpy 数组。例如,仅随机播放非零值。
import numpy as np
a = np.arange(9).reshape((3,3))
a[2,2] = 0
# Shuffle non-zero values
# Example shuffle with only 0 staying in place
>>> a
array([[0, 5, 3],
[7, 2, 6],
[4, 1, 0]])
解决方案
你可以这样做:
import numpy as np
a = np.arange(9).reshape((3,3))
a[2,2] = 0
c = a[a!=0]
np.random.shuffle(c)
a[a!=0] = c
a
# array([[0, 6, 5],
# [2, 3, 7],
# [4, 1, 0]])
如果你有不同的条件,你可以这样做:
import numpy as np
a = np.arange(9).reshape((3,3))
a[2,2] = 0
cond = a>3
c = a[cond]
np.random.shuffle(c)
a[cond] = c
更简洁的方法是:
a = np.arange(9).reshape((3,3))
a[2,2] = 0
a[a>3] = np.random.permutation(a[a>3])
推荐阅读
- java - Log4j2 没有像指定的那样格式化输出/我认为没有添加附加程序
- python-3.x - 在 Windows 上构建 twisted[tls] 失败?
- python - Python Peewee 中同一张表的外键
- android - 在回收站视图中出现 onitemclick 错误
- reactjs - 哪个反应钩子与firestore onsnapshot一起使用?
- c++ - 如何在不传递命令行参数的情况下在 C++ 中设置我的环境变量
- dask - 将行值转换为多列 - Dask
- loops - 使用 Camelot.py 保存包含表的单个 csv 文件而不覆盖
- html - DataTables 导出带有 html 标签的 CSV
- php - 如何通过wordpress中的functions.php覆盖父主题的公共静态函数?