为什么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()相同的行为?
2条答案
按热度按时间00jrzges1#
np.random.choice
,正如文档中提到的,期望一个1D数组,当你的输入被表示为数组时,它将是2D
,所以,它不会像这样简单地工作。为了使它工作,我们可以输入输入的长度,并让它选择一个索引,当索引到输入中时,它将是来自
random.choice
的等价索引,如下所示-样品运行-
或者,我们可以将输入转换为对象dtype的1D数组,这将允许我们直接使用
np.random.choice
,如下所示-euoag5mw2#
与此相关,如果你想像这样随机抽取二维矩阵的 * 行
你可以这样做
应该适用于具有任意列数的2D矩阵,当然,您可以使用
size
kwarg等进行任意次数的采样。