Прямой способ доступа к объекту Numpy RandomState
Есть ли более прямой доступ к RandomState
объект, созданный при импорте, кроме np.random.<some function>.__self__
? И то и другое np.random._rand
а также getattr(np.random, "_rand")
повышение AttributeError
, Первый работает хорошо, но не кажется очень прозрачным /Pythonic, хотя наиболее прозрачным может быть просто создание отдельного RandomState
объект. Цель прохождения interal_state
переменная для функции Cython, которая вызывает функции randomkit напрямую.
2 ответа
Ты можешь использовать np.random.get_state()
чтобы получить доступ к случайному состоянию и np.random.set_state()
установить это.
Пример использования:
>>> import numpy as np
>>> state = np.random.get_state()
>>> np.random.rand()
0.5951085367670415
>>> np.random.set_state(state)
>>> np.random.rand()
0.5951085367670415
Обратите внимание, что state
это просто кортеж
>>> state
('MT19937', array([3133054952, 999208925, 1226199620, ..., 3991712371, 943990344,
955790602], dtype=uint32), 624, 0, 0.0)
Благодаря kazemakase нашел ответ: _ и доступен напрямую, мне просто нужно импортировать mtrand. Но __self__
может быть более надежным, если синтаксис не изменится.