首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >二维数组的random.choice,数字越大,概率越高?

二维数组的random.choice,数字越大,概率越高?
EN

Stack Overflow用户
提问于 2020-01-12 23:45:57
回答 2查看 188关注 0票数 2

有没有一种方法可以从二维数组中的每一行中随机选取n个项目,并使用循环从较大的值中随机选取较大的值

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

F.e.如果我有:

代码语言:javascript
复制
 q = np.random.random((10,10))

我可以选择每一行的max-2,如下所示:

代码语言:javascript
复制
  np.sort(q,axis=1)[:,-2:]

相反,我想要的是随机选择2,不总是最大值,但有更高的概率更大的数字。

下面是如何获得单行概率的方法:

代码语言:javascript
复制
np.random.choice(q[0,:], p=q[0,:]/q[0,:].sum())
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-13 01:18:11

您可以使用apply_along_axis

代码语言:javascript
复制
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()时出现错误。

票数 1
EN

Stack Overflow用户

发布于 2020-01-13 00:06:37

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

代码语言:javascript
复制
res = [random.choices(l, weights=l, k=2) for l in q]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59705466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档