Последовательно создавать один и тот же случайный массив numpy



Я жду, когда другой разработчик закончит кусок кода, который вернет массив NP формы (100,2000) со значениями либо -1,0, либо 1.



тем временем, я хочу случайным образом создать массив тех же характеристик, чтобы я мог начать свою разработку и тестирование. Дело в том, что я хочу, чтобы этот случайно созданный массив был одинаковым каждый раз, так что я не тестирую массив, который продолжает изменять свое значение каждый раз, когда я повторно запускаю свой процесс.



Я могу создать свой массив таким образом, но есть ли способ создать его так, чтобы он был одинаковым каждый раз. Я могу замариновать предмет и вытащить его, но интересно, есть ли другой способ.



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

3 ответов:

просто посеять генератор случайных чисел с фиксированным значением, например

numpy.random.seed(42)

таким образом, вы всегда будете получать одну и ту же последовательность случайных чисел.

создайте свой собственный экземпляр 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])

Если вы используете другие функции, полагающиеся на случайное состояние, вы не можете просто установить и общее семя, но вместо этого должны создать функцию для генерации случайного списка чисел и установить семя в качестве параметра функции. Это не будет беспокоить любые другие случайные генераторы в коде:

# 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)

Comments

    Ничего не найдено.