Consistenly创build相同的随机numpy数组

我正在等待另一位开发人员完成一段代码,该代码将返回值为-1,0或1的np数组形状(100,2000)。

与此同时,我想随机创build一个具有相同特性的数组,以便我可以在开发和testing中获得先机。 问题是,我希望这个随机创build的数组每次都是相同的,这样我就不会对每次重新运行我的进程时不断更改其值的数组进行testing。

我可以像这样创build我的数组,但有没有一种方法来创build它,以便每次都是一样的。 我可以腌制这个物体,把它取下来,但是不知道是否有另一种方法。

r = np.random.randint(3, size=(100, 2000)) - 1 

简单地给随机数生成器赋一个固定的值,例如

 numpy.random.seed(42) 

这样,你总是会得到相同的随机数字序列。

使用您select的种子创build您自己的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]) 

如果你正在使用依赖随机状态的其他函数,你不能只设置整个种子,而应该创build一个函数来生成你的随机数字列表,并将种子设置为函数的参数。 这不会干扰代码中的任何其他随机生成器:

 # Random states def get_states(random_state, low, high, size): rs = np.random.RandomState(random_state) states = rs.randint(low=low, high=high, size=size) return states # Call function states = get_states(random_state=42, low=2, high=28347, size=25)