我想对scipy.stats.norm
进行子类化,这样我就可以拥有具有附加功能的冻结分布实例(即具有特定均值/方差的实例)。
但是,我无法超越构建实例的第一步。
编辑:这是一个互动会议的笔录,演示了我的问题(没有袖手旁观)
In [1]: import scipy.stats
In [2]: class A(scipy.stats.norm):
...: def __init__(self):
...: super( A, self).__init__()
...:
...:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/home/Dave/src/python2.7/density_estimation/<ipython console> in <module>()
/usr/lib64/python2.7/site-packages/scipy/stats/distributions.pyc in __init__(self, momtype, a, b, xa, xb, xtol, badvalue, name, longname, shapes, extradoc)
958
959 if longname is None:
--> 960 if name[0] in ['aeiouAEIOU']:
961 hstr = "An "
962 else:
TypeError: Error when calling the metaclass bases
'NoneType' object is not subscriptable
我可以看到
scipy.stats
做某种奇怪的事情,其中norm
是某事物的特定实例(某种类型?),但这不是普通的类定义,因此我看不到如何为其调用构造函数。编辑#2:scipy版本可能相关。
In [19]: scipy.__version__
Out[19]: '0.9.0'
最佳答案
scipy.stats.norm
不是类。它是scipy.stats.norm_gen
的实例。调用norm(*args, **kwds)
将返回带有rv_frozen
的norm
实例以及您提供的参数。如果要使用一种新的冻结分发,请在rv_frozen
子类中添加您的方法,并使用norm
和参数对其进行实例化。不必担心将norm_gen
子类化。
关于python - 如何子类scipy.stats.norm?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17975293/