有没有一种方法可以从二维数组中的每一行中随机选取n个项目,并使用循环从较大的值中随机选取较大的值
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())发布于 2020-01-13 01:18:11
您可以使用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()时出现错误。
发布于 2020-01-13 00:06:37
使用random.choices的非numpy解决方案如下:
res = [random.choices(l, weights=l, k=2) for l in q]https://stackoverflow.com/questions/59705466
复制相似问题