2D数组的random.choice,更大的数字和更高的概率?

有没有一种方法可以从2D数组的每一行中随机选择n个项目,概率更高,因此可以使用LOOP选出更大的值,而没有选择

random.choice()仅适用于一维数组...

F.e。如果我有:

 q = np.random.random((10,10))

我可以像这样在每一行中选择max-2:

  np.sort(q,axis=1)[:,-2:]

我想要的是随机选择2个值,而并非总是最大值,而是更大的概率。更大的数字。

这是您获得具有概率的单行的方法:

np.random.choice(q[0,:],p=q[0,:]/q[0,:].sum())
a665362 回答:2D数组的random.choice,更大的数字和更高的概率?

您可以使用apply_along_axis

q = np.random.random((10,10))

def choice(row,n,replace=False):
    return np.random.choice(row,size=n,p=row/row.sum(),replace=replace)

np.apply_along_axis(func1d=choice,axis=1,arr=q,n=2)

我不知道您拥有什么数组,但是您可能应该检查row.sum()是否为0,以避免计算p=row/row.sum()时出错。

,

使用random.choices的非数字解决方案如下:

res = [random.choices(l,weights=l,k=2) for l in q]
本文链接:https://www.f2er.com/2782204.html

大家都在问