Прямой способ доступа к объекту 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__ может быть более надежным, если синтаксис не изменится.

Другие вопросы по тегам