【发布时间】:2016-09-02 00:29:08
【问题描述】:
根据http://docs.scipy.org/doc/numpy-dev/reference/generated/numpy.random.choice.html,使用replace = False和Numpy的random.choice方法应该可以使样本无需替换。但是,这似乎对我不起作用:
In [33]: import numpy as np
In [34]: arr = range(5)
In [35]: number = np.random.choice(arr, replace = False)
In [36]: arr
Out[36]: [0, 1, 2, 3, 4]
采样后数组arr 仍然是range(5),并且没有像我预期的那样丢失(随机)数字。我如何从range(5) 中抽取一个数字而不进行替换?
【问题讨论】:
-
np.random.choice不会改变原始数组。它并不是从数组中直接采样。 -
您没有将其分配回
arr。 -
@Divakar 这将是 OP 正在寻找的补充。
-
"我如何从 range(5) 中抽取一个数字而不进行替换?"对于单个数字,“有或无”部分并不重要。如果你想对两个数字进行采样,你只需
np.random.choice(arr, 2, replace=False) -
@juanpa.arrivillaga 好吧,我不确定 OP 在寻找什么,但由于 OP 提到:
array arr is still range(5),因此我之前的评论。