gpt4 book ai didi

numpy - numpy.random.choice 和 random.choice 的输入参数有区别吗?

转载 作者:行者123 更新时间:2023-12-04 16:30:51 28 4
gpt4 key购买 nike

为什么 numpy.random.choice 与 random.choice 不同?当我这样做时:

 >>> random.choice([(1,2),(4,3)])
(1, 2)

有用。

但是当我这样做时:
 >>> np.random.choice([(1,2), (3,4)])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "mtrand.pyx", line 1393, in mtrand.RandomState.choice
(numpy/random/mtrand/mtrand.c:15450)
ValueError: a must be 1-dimensional

如何在 numpy.random.choice() 中实现与 random.choice() 相同的行为?

最佳答案

np.random.choice 如文档中所述,需要一个一维数组,当表示为数组时,您的输入将是 2D .所以,它不会像那样简单地工作。

为了让它工作,我们可以输入输入的长度并让它选择一个索引,当索引到输入中时,它会与 random.choice 中的索引等效。 , 如下所示 -

out = a[np.random.choice(len(a))] # a is input

sample 运行 -
In [74]: a = [(1,2),(4,3),(6,9)]

In [75]: a[np.random.choice(len(a))]
Out[75]: (6, 9)

In [76]: a[np.random.choice(len(a))]
Out[76]: (1, 2)

或者,我们可以将输入转换为对象 dtype 的一维数组,这将允许我们直接使用 np.random.choice , 如下所示 -
In [131]: a0 = np.empty(len(a),dtype=object)

In [132]: a0[:] = a

In [133]: a0.shape
Out[133]: (3,) # 1D array

In [134]: np.random.choice(a0)
Out[134]: (6, 9)

In [135]: np.random.choice(a0)
Out[135]: (4, 3)

关于numpy - numpy.random.choice 和 random.choice 的输入参数有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43664994/

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