读取和写入元组到文件(numpy.random.RandomState.get_state)

时间:2016-01-07 12:05:16

标签: python io tuples

我正在尝试将我的代码中的随机数生成器的状态保存到文件中,然后再将其读回。生成的元组具有以下形式:

tuple(str,ndarray of 624 uints,int,int,float)

返回的元组具有以下项目:

  1. 字符串'MT19937'。
  2. 624个无符号整数键的一维数组。
  3. 整数pos。
  4. 一个整数has_gauss。
  5. a float cached_gaussian。
  6. 是否有一种简单的方法可以将其写入文件,然后以最初生成的格式将其读回来?

    这是我到目前为止所做的:

     fx = open('state.dat', 'w')
     fx.write(' '.join(str(s) for s in state) + '\n')
     fx.close()
    

    这会打印到文件,但我不确定如何将字符串输出转换回原始格式。

    非常感谢

    赖安

1 个答案:

答案 0 :(得分:2)

您可以使用pickle将任何对象保存为磁盘上的二进制文件:

import numpy
import pickle

RANDOM_STATE_FILE = 'random.bin'

def save_random_state():
    with open(RANDOM_STATE_FILE, 'wb') as f:
        pickle.dump(numpy.random.RandomState.get_state(), f)

def load_random_state():
    with open(RANDOM_STATE_FILE, 'rb') as f:
        numpy.random.RandomState.set_state(pickle.load(f))