"see docstring of the instance object for more information"是什么意思



我觉得这是一个愚蠢的问题,但当我在IPython笔记本上时,我确实在一些numpy/scipy函数上提供了帮助,比如stat.norm.rvs,它经常说,关于*args和**kargs,"有关更多信息,请参阅实例对象的docstring"。如果没有帮助(stat.norm.rvs),我该如何查看此文档字符串?

不要觉得自己很笨;有时很难找到你想要的信息,尤其是刚开始的时候。此外,scipy.stats中的许多文档字符串都是自动生成的,因此它们在某种程度上是通用的,而不是定制的。好消息是,一旦你不知道如何操作分发,所有其他的基本上都是一样的,因为它们共享相同的接口

让我们学习一个例子。既然您正在使用IPython(很棒!),我们也可以在对象后面使用问号,例如obj?,以了解有关对象这显示了文档字符串,如help(obj),以及其他有用的信息,如作为它的类型,定义它的位置,以及(对于可调用)它的调用签名。

了解事物的组织方式会有所帮助。scipy.stats是一个模块:

In [386]: from scipy import stats

模块docstring列出了许多类型的分布。

In [394]: stats?
...
Continuous distributions
========================
   ...
   alpha             -- Alpha
   anglit            -- Anglit
   arcsine           -- Arcsine
   beta              -- Beta
   betaprime         -- Beta Prime
   ...
   norm              -- Normal (Gaussian)

有两个主要类——stats.rv_continuousstats.rv_discretestats文档字符串中列出的每个分发版都是的实例这两类中的一类。例如,stats.normstats.norm_genstats.rv_continuous的一个子类:

In [14]: type(stats.norm).mro()
Out[14]: 
[scipy.stats._continuous_distns.norm_gen,
 scipy.stats._distn_infrastructure.rv_continuous,
 scipy.stats._distn_infrastructure.rv_generic,
 object]

请注意,stats.norms.rvs实例方法:

In [387]: stats.norm.rvs?
Type:        instancemethod
String form: <bound method norm_gen.rvs of <scipy.stats._continuous_distns.norm_gen object at 0x7f1479ba2690>>

所以后来它说

分布的形状参数(请参见实例的文档字符串对象以获取更多信息)。

据说stats.norm:的文档字符串中有更多信息

In [401]: stats.norm?
Docstring:
A normal continuous random variable.
The location (loc) keyword specifies the mean.
The scale (scale) keyword specifies the standard deviation.
...
Methods
-------
``rvs(loc=0, scale=1, size=1, random_state=None)``
    Random variates.

从这个描述中,你可以看到stats.norm.rvs(loc=10, scale=2, size=5)将返回5个随机变量,平均值为10,标准偏差为2:

In [402]: stats.norm.rvs(loc=10, scale=2, size=5)
Out[402]: array([  9.82454792,   8.52106712,   7.33889233,   8.73638555,  10.90927226])

或者,stats.norm也是可调用的——您可以传递locscale"形状"参数,以将这些参数"冻结"到分布中。你得到的是所谓的"冻结分配"。例如,您可以创建一个平均值为10、标准偏差为2:的正态分布

In [403]: norm = stats.norm(10, 2)

现在调用冻结分布的rvs方法获得5个随机变量:

In [404]: norm.rvs(5)
Out[404]: array([  7.21018883,  12.98978919,  10.99418761,  11.2050962 ,   8.27780614])

相关内容

最新更新