gpt4 book ai didi

python - Numpy 选择不沿特定维度替换

转载 作者:太空宇宙 更新时间:2023-11-03 12:03:25 24 4
gpt4 key购买 nike

在没有放回的情况下,我根据指定的分布从 n 个不同时间的样本中选择 k 个元素。

迭代解决方案很简单:

for _ in range(n):
np.random.choice(a, size=k, replace=False, p=p)

我无法设置 size=(k, n) 因为我会在不替换样本的情况下进行采样。 an 很大,希望有向量化的解决方案。

最佳答案

所以完整的迭代解决方案是:

In [158]: ll=[]
In [159]: for _ in range(10):
...: ll.append(np.random.choice(5,3))
In [160]: ll
Out[160]:
[array([3, 2, 4]),
array([1, 1, 3]),
array([0, 3, 1]),
...
array([0, 3, 0])]
In [161]: np.array(ll)
Out[161]:
array([[3, 2, 4],
[1, 1, 3],
...
[3, 0, 1],
[4, 4, 2],
[0, 3, 0]])

这可以转换为列表理解:np.array([np.random.choice(5,3) for _ in range(10)])

或者等效于 A=np.zeros((10,3),int)A[i,:]=np.random...

换句话说,您希望从 range(5) 中进行选择,但希望它们仅在行内是唯一的。

np.random.choice 文档提出了另一种选择:

>>> np.random.choice(5, 3, replace=False)
array([3,1,0])
>>> #This is equivalent to np.random.permutation(np.arange(5))[:3]

我想知道我是否可以生成

array([[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
...
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4]])

并排列行内的值。但是使用 permute 我只能将所有列混合在一起。所以我仍然坚持在行上迭代以产生无需替换的选择。

关于python - Numpy 选择不沿特定维度替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40002821/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com