我有一个方形的 numpy 2D 矩阵。
2 2 2 2
2 2 2 2
2 2 2 2
2 2 2 2
Run Code Online (Sandbox Code Playgroud)
我需要将一定数量的随机矩阵值设置为 0。假设它是 5 个元素。这意味着必须将 16 个矩阵值中的任何 5 个设置为 0。例如,新矩阵可以是
2 2 0 0
0 2 2 2
2 2 2 2
0 2 0 2
Run Code Online (Sandbox Code Playgroud)
或者
2 0 2 2
2 2 0 2
2 2 0 2
0 2 2 0
Run Code Online (Sandbox Code Playgroud)
或其他一些。
我怎么能做到这种有效的方式?
这将做到:
import random
arr1d = arr.ravel()
randidx = random.sample(range(len(arr1d)), 5)
arr1d[randidx] = 0
Run Code Online (Sandbox Code Playgroud)
这会修改arr因为ravel()返回一个视图,而不是一个副本。
有关如何生成随机数的更多信息,请参阅:numpy 中的非重复随机数
| 归档时间: |
|
| 查看次数: |
51 次 |
| 最近记录: |