直接访问Numpy RandomState对象的方法

时间:2017-07-19 12:25:40

标签: python numpy cython numpy-random

是否有更直接的方式来访问RandomState以外的导入时创建的np.random.<some function>.__self__对象? np.random._randgetattr(np.random, "_rand")都会提升AttributeError。前者工作正常,但似乎不是非常透明/ Pythonic,尽管最透明可能只是创建一个单独的RandomState对象。目的是将interal_state变量传递给直接调用randomkit函数的cython函数。

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

感谢kazemakase找到答案:_rand可以直接访问,我只需要导入mtrand。但如果语法没有改变,__self__可能会更具未来性。