pyi*_*gal -1 python arrays random numpy
我有一个带有布尔值的一维(numpy)数组。例如:
x = [True, True, False, False, False, True, False, True, True, True, False, True, True, False]
Run Code Online (Sandbox Code Playgroud)
该数组包含8True 值。例如,我想从存在的值中随机保留3(8在这种情况下必须小于)作为 True 值8。换句话说,我想将5这些8True 值随机设置为 False。
可能的结果是:
x = [True, True, False, False, False, False, False, False, False, False, False, False, True, False]
Run Code Online (Sandbox Code Playgroud)
如何实施?
一种方法是 -
# Get the indices of True values
idx = np.flatnonzero(x)
# Get unique indices of length 3 less than the number of indices and
# set those in x as False
x[np.random.choice(idx, len(idx)-3, replace=0)] = 0
Run Code Online (Sandbox Code Playgroud)
样品运行 -
# Input array
In [79]: x
Out[79]:
array([ True, True, False, False, False, True, False, True, True,
True, False, True, True, False], dtype=bool)
# Get indices
In [80]: idx = np.flatnonzero(x)
# Set 3 minus number of True indices as False
In [81]: x[np.random.choice(idx, len(idx)-3, replace=0)] = 0
# Verify output to have exactly three True values
In [82]: x
Out[82]:
array([ True, False, False, False, False, False, False, True, False,
False, False, True, False, False], dtype=bool)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
561 次 |
| 最近记录: |