有没有一种方法可以从2D数组的每一行随机选取n个项目,并且不使用LOOP就能以更高的概率选取更大的值
choice()仅适用于一维数组...
例如,如果我有:
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())
2条答案
按热度按时间k2fxgqgv1#
您可以使用apply_along_axis:
我不知道您使用的是什么数组,但您可能应该检查
row.sum()
是否不为0,以避免在计算p=row/row.sum()
时出错。g52tjvyc2#
使用random.choices的非numpy解决方案如下: