gpt4 book ai didi

python - 从数组中随机翻转 m 个值

转载 作者:太空宇宙 更新时间:2023-11-04 08:47:30 26 4
gpt4 key购买 nike

我有一个长度为 n 的数组,我想从中随机选择 m 元素并翻转它们的值。什么是最有效的方法?

有两种情况,m=1情况是特例。可以单独讨论,m=/=1

我的尝试是:

import numpy as np
n = 20
m = 5
#generate an array a
a = np.random.randint(0,2,n)*2-1
#random choose `m` element and flip it.
for i in np.random.randint(0,n,m):
a[m]=-a[m]

假设m是十位,n是百位。

最佳答案

为了确保我们不会将同一个元素翻转两次甚至更多次,我们可以使用 np.random.choice 在该长度范围内创建唯一索引。使用其可选的 replace 参数设置为 False。然后,简单地索引输入数组并一次性翻转应该给我们想要的输出。因此,我们会有这样的实现 -

idx = np.random.choice(n,m,replace=False)
a[idx] = -a[idx]

更快的版本:对于 np.random_choice 的更快版本,我建议阅读 this post探索使用 np.argpartition 来模拟相同的行为。

关于python - 从数组中随机翻转 m 个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38879244/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com