Idr*_*Idr 85 python random numpy
我正在等待另一个开发人员完成一段代码,该代码将返回一个形状为np的数组(100,2000),其值为-1,0或1.
与此同时,我想随机创建一个具有相同特征的数组,这样我就可以在开发和测试方面领先一步.问题是我希望这个随机创建的数组每次都是相同的,所以我不会测试每次重新运行我的进程时不断更改其值的数组.
我可以像这样创建我的数组,但有没有办法创建它,以便每次都相同.我可以腌制物体并解开它,但想知道是否还有另一种方法.
r = np.random.randint(3, size=(100, 2000)) - 1
Run Code Online (Sandbox Code Playgroud)
Rob*_*ern 176
numpy.random.RandomState()
使用您选择的种子创建自己的实例.不要使用numpy.random.seed()
除了解决不允许您传递自己的RandomState
实例的不灵活的库.
[~]
|1> from numpy.random import RandomState
[~]
|2> prng = RandomState(1234567890)
[~]
|3> prng.randint(-1, 2, size=10)
array([ 1, 1, -1, 0, 0, -1, 1, 0, -1, -1])
[~]
|4> prng2 = RandomState(1234567890)
[~]
|5> prng2.randint(-1, 2, size=10)
array([ 1, 1, -1, 0, 0, -1, 1, 0, -1, -1])
Run Code Online (Sandbox Code Playgroud)
Sve*_*ach 78
简单地使用固定值为随机数生成器播种,例如
numpy.random.seed(42)
Run Code Online (Sandbox Code Playgroud)
这样,您将始终获得相同的随机数序列.
小智 9
我只是想澄清一些有关 @Robert Kern 答案的事情,以防不清楚。即使您确实使用了它,RandomState
您也必须在每次调用 numpy random 方法(如 Robert 的示例中)时初始化它,否则您将得到以下结果。
Python 3.6.9 |Anaconda, Inc.| (default, Jul 30 2019, 19:07:31)
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> prng = np.random.RandomState(2019)
>>> prng.randint(-1, 2, size=10)
array([-1, 1, 0, -1, 1, 1, -1, 0, -1, 1])
>>> prng.randint(-1, 2, size=10)
array([-1, -1, -1, 0, -1, -1, 1, 0, -1, -1])
>>> prng.randint(-1, 2, size=10)
array([ 0, -1, -1, 0, 1, 1, -1, 1, -1, 1])
>>> prng.randint(-1, 2, size=10)
array([ 1, 1, 0, 0, 0, -1, 1, 1, 0, -1])
Run Code Online (Sandbox Code Playgroud)