python – Numpy选择没有替换特定维度
发布时间:2020-12-20 13:14:27 所属栏目:Python 来源:网络整理
导读:在没有替换的情况下,我根据指定的分布从样本中选择k个元素n个不同的时间. 迭代解决方案很简单: for _ in range(n): np.random.choice(a,size=k,replace=False,p=p) 我不能设置size =(k,n)因为我会在没有替换样本的情况下进行采样. a和n很大,我希望有一个矢
在没有替换的情况下,我根据指定的分布从样本中选择k个元素n个不同的时间.
迭代解决方案很简单: for _ in range(n): np.random.choice(a,size=k,replace=False,p=p) 我不能设置size =(k,n)因为我会在没有替换样本的情况下进行采样. a和n很大,我希望有一个矢量化解决方案. 解决方法
以下是一些建议.
>您可以预先分配(n,k)输出数组,然后多次执行选择: result = np.zeros((n,k),dtype=a.dtype) for row in range(n): result[row,:] = np.random.choice(a,p=p) >您可以预先计算n * k个选择索引,然后立即将它们应用于全部.由于您希望在不替换的情况下对索引进行采样,因此您需要再次在循环中使用np.choice: indices = np.concatenate([np.random.choice(a.size,p=p) for _ in range(n)]) result = a[indices].reshape(n,k) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容