我觉得这是一个愚蠢的问题,但是当我在一个IPython笔记本中,我确实帮助了一些numpy / scipy函数,比如说stat.norm.rvs,它经常说,关于* args和** kargs,“有关更多信息,请参阅实例对象的docstring”。如果没有帮助(stat.norm.rvs),我如何看到这个docstring?
答案 0 :(得分:5)
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_continuous
和stats.rv_discrete
。
stats
文档字符串中列出的每个分发都是实例
这两个课程中的一个。例如,stats.norm
是instance of
stats.norm_gen
,subclass of stats.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
是 instancemethod :
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
也可以调用 - 您可以传递loc
和scale
&#34;形状&#34;参数to "freeze" those parameters进入分布。你得到的东西被称为&#34;冻结分布&#34;。例如,您可以使用平均值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])