Последовательно создавать один и тот же случайный массив numpy
Я жду, когда другой разработчик закончит кусок кода, который вернет массив NP формы (100,2000) со значениями либо -1,0, либо 1.
тем временем, я хочу случайным образом создать массив тех же характеристик, чтобы я мог начать свою разработку и тестирование. Дело в том, что я хочу, чтобы этот случайно созданный массив был одинаковым каждый раз, так что я не тестирую массив, который продолжает изменять свое значение каждый раз, когда я повторно запускаю свой процесс.
Я могу создать свой массив таким образом, но есть ли способ создать его так, чтобы он был одинаковым каждый раз. Я могу замариновать предмет и вытащить его, но интересно, есть ли другой способ.
r = np.random.randint(3, size=(100, 2000)) - 1
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