yat*_*nla 1 docstring instance scipy
我觉得这是一个愚蠢的问题,但当我在一个IPython笔记本中,我确实帮助了一些numpy/scipy函数,比如说stat.norm.rvs,它经常说,关于*args和**kargs,"有关更多信息,请参阅实例对象的docstring".如果没有帮助(stat.norm.rvs),我如何看到这个docstring?
不要觉得愚蠢; 有时很难找到您正在寻找的信息,尤其是在开始时.此外,许多文档字符串scipy.stats
是自动生成的,因此它们有点通用,而不是定制的.好消息是,一旦你不知道如何操纵分发,所有其他的基本相同,因为它们共享相同的界面.
让我们通过一个例子来解决.由于您使用的是IPython(太棒了!),我们也可以在对象后面使用问号,例如obj?
,找出有关该对象的更多信息.这显示了docstring,help(obj)
以及其他有用的信息,例如它的类型,定义它的位置,以及(对于callables)它的调用签名.
它有助于了解事物的组织方式.scipy.stats
是一个模块:
In [386]: from scipy import stats
Run Code Online (Sandbox Code Playgroud)
模块docstring列出了多种分布.
In [394]: stats?
...
Continuous distributions
========================
...
alpha -- Alpha
anglit -- Anglit
arcsine -- Arcsine
beta -- Beta
betaprime -- Beta Prime
...
norm -- Normal (Gaussian)
Run Code Online (Sandbox Code Playgroud)
有两个主要类 - stats.rv_continuous
和stats.rv_discrete
.stats
docstring中列出的每个分发都是这两个类之一的实例.stats.norm
例如,是其实例
stats.norm_gen
是以下的子类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]
Run Code Online (Sandbox Code Playgroud)
请注意,这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>>
Run Code Online (Sandbox Code Playgroud)
所以当它后来说
分布的形状参数( 有关更多信息,请参阅实例对象的docstring ).
它是说文档字符串中有更多信息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.
Run Code Online (Sandbox Code Playgroud)
从这个描述中你可以看到,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])
Run Code Online (Sandbox Code Playgroud)
或者,stats.norm
也可以调用 - 您可以传递loc
和scale
"形状"参数以将这些参数"冻结"到分布中.你得到的东西被称为"冻结分布".例如,您可以使用平均值10和标准偏差2创建正态分布:
In [403]: norm = stats.norm(10, 2)
Run Code Online (Sandbox Code Playgroud)
现在调用冻结分布的rvs
方法来获得5个随机变量:
In [404]: norm.rvs(5)
Out[404]: array([ 7.21018883, 12.98978919, 10.99418761, 11.2050962 , 8.27780614])
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
366 次 |
最近记录: |