4

scipy.stats ディストリビューションを保存するにはどうすればよいですか?

例えば:

a = [scipy.stats.norm(0,1), scipy.stats.norm(0,2)]
with open("distro.pickle", 'w') as f:
    pickle.dump(a, f)

これを行うと、TypeError: can't pickle instancemethod objects

4

1 に答える 1

7

酸洗いには対応していません。問題を「解決」する簡単な方法は、引数をピクルし、アンピクルするときに新しいオブジェクトを作成することです。

>>> from collections import namedtuple
>>> Norm = namedtuple('Norm', 'mu variance')
>>> def pickle_norm(n):
...     return pickle.dumps(Norm(*n.args))
... 
>>> def unpickle_norm(s):
...     return scipy.stats.norm(*pickle.loads(s))
... 
>>> s = pickle_norm(scipy.stats.norm(5, 10))
>>> d = unpickle_norm(s)
于 2013-01-09T13:11:07.297 に答える