Python 访问Numpy RandomState对象的直接方法

Python 访问Numpy RandomState对象的直接方法,python,numpy,cython,numpy-random,Python,Numpy,Cython,Numpy Random,除了np.random..\uu self\uu之外,是否有更直接的方法访问导入时创建的RandomState对象?np.random.\u rand和getattr(np.random,“\u rand”)raiseAttributeError。前者可以很好地工作,但看起来不是很透明/像Pythonic,尽管最透明的可能只是创建一个单独的RandomState对象。其目的是将内部状态变量传递给cython函数,该函数直接调用randomkit函数 您可以使用访问随机状态并进行设置 用法示例:

除了
np.random..\uu self\uu
之外,是否有更直接的方法访问导入时创建的
RandomState
对象?
np.random.\u rand
getattr(np.random,“\u rand”)
raise
AttributeError
。前者可以很好地工作,但看起来不是很透明/像Pythonic,尽管最透明的可能只是创建一个单独的
RandomState
对象。其目的是将
内部状态
变量传递给cython函数,该函数直接调用randomkit函数

您可以使用访问随机状态并进行设置

用法示例:

>>> 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,我找到了一个答案:_rand可以直接访问,我只需要导入mtrand。但是如果语法不改变的话,
\uuuuuu self\uuuuu
可能更能证明未来。

我看到了可能的重复,那页上的第二个答案给了我我想要的答案。未来证明是一个很好的论据。谢谢。据我所知,
\uuu self\uuu
\u rand
是访问实际全局
随机状态
对象的唯一方法。通常,创建一个新实例并使用它会更好(而且更具pythonic:)。我想这就是我要做的,如果我的函数接受随机状态对象作为参数,这也会使单元测试更容易。然后我必须自己(重新)创建c级对象。为什么,当它已经存在的时候。我想我的问题是为什么它不(更)容易访问。你想用ti做什么,这不允许你做?调用一个需要rk_状态C类型变量的C函数(通过Cython)(除非我将对象从Python传递回C)什么C函数需要原始C状态?randomkit中的任何C函数,它们都需要指向rk_状态类型的指针。我计划让多个线程在每个进程中共享内存,因此我想发布主要计算工作的GIL(这是一个统计程序)。