我有一个随机数组。我只想改变一些基于概率0.07的元素。目前我正在使用for循环遍历每个元素。有没有更好的方法来做到这一点?NumPy更改具有给定概率的数组的元素
1
A
回答
6
如果有问题的数组被称为a
,您可以通过
a[numpy.random.rand(*a.shape) < 0.07]
选择其值的0.07的平均比例,我不知道怎么你要改变这些值。为了将它们乘以两,只要做
a[numpy.random.rand(*a.shape) < 0.07] *= 2.0
2
斯文的答案是优雅的。然而,它的速度要快得多来挑选要与
n = numpy.random.binomial(len(a), 0.07)
a[numpy.random.randint(0, len(a), size=n)] *= 2.0
第一表达决定要多少个元素进行采样以改变元件(n为(a)中,但平均0.07 0和len之间的整数),第二个生成正好你想要检索的索引数量。 (请注意,但是,你可能会得到同样的指数几次。)
到
的差异a[numpy.random.rand(len(a)) < p]
为p接近1变小,但对于小P,它可能是10倍或更多。
相关问题
- 1. 给定概率与numpy随机位数组
- 2. 在numpy数组中更改元素
- 3. Python的numpy的随机数的概率
- 4. 将relu函数传递给numpy数组的所有元素
- 5. 如何更改传递给python C扩展的numpy数组元素?
- 6. 在Perl中绘制具有给定概率的字符
- 7. 给出数组元素获取numpy的阵列的具体指标为整数
- 8. ,其具有相等的第一列组2D numpy的数组元素的值
- 9. 用numpy数组替换1d numpy数组中的元素
- 10. numpy数组的压缩率
- 11. 生成具有一定概率的随机数
- 12. 熊猫 - 给定具体b的条件概率
- 13. 如何删除numpy数组中所有numpy数组中的第n个元素?
- 14. 更改数组中的每个元素
- 15. 更改数组中元素的值C
- 16. 更改数组中的元素
- 17. 具有0个元素的数组
- 18. 使用numpy数组元素的操作
- 19. numpy数组的清除元素
- 20. Numpy除了数组的元素
- 21. Numpy数组中的元素索引1
- 22. numpy数组更改ID
- 23. 作用于numpy数组的所有元素的函数?
- 24. 具有指定顺序的数组绑定元素
- 25. Python numpy根据概率生成随机二进制值数组
- 26. RSelenium找不到具有给定参数的元素
- 27. 概率组合
- 28. 修改数组numpy中的实际元素值
- 29. 更改元组元素的值
- 30. Javascript加权概率数组
太棒了!谢谢。我只是想将它们更改为其他随机值。这比我的循环好得多。 – wot 2012-07-20 21:21:42
请注意,单独更改元素与概率* p *并更改“其值的比例* p *”之间存在差异。我认为显示的代码是前者。 – 2012-07-20 21:38:12
@tc如何完成后者? – wot 2012-07-20 21:50:24