获取numpy.random分发的列表

时间:2013-07-08 19:41:02

标签: python

如何获取in the docs所述的可用numpy.random发布列表?

我正在编写一个产生噪音的命令行实用程序。我想获取每个可用的发行版,并获取所需的参数以生成命令行选项。

我几乎可以这样做:

import numpy as np
distributions = filter( lambda elt: not elt.startswith("__"),  dir(np.random) )

...但是这个列表包含额外的东西(例如shuffle,get_state),这些东西不是发行版。

2 个答案:

答案 0 :(得分:1)

正如他们在the documentation中所做的那样,您必须手动列出它们。这是确保您不会获得将在numpy的未来版本中添加的不良函数的唯一方法。如果您不关心将来的添加,可以过滤掉非分布的函数名称。

他们很友好地提供了模块文档中的列表(import numpy as np; print(np.random.__doc__)),但是如您所示,迭代模块函数比解析文档字符串更安全。他们定义了列表(np.random.__all__),这可能是另一个有趣的迭代可能性。

您的问题表明,应审核numpy的命名约定,以包含类似性质的函数的前缀或将其分组到子模块中。

答案 1 :(得分:0)

可能更漂亮,但是:

import numpy as np
doc_string = np.random.__doc__
doc_string = doc_string.split("\n")
distribs = []
for line in doc_string:
    if 'distribution' in line:
        word = line.split()[0]
        if word[0].islower():
            distribs.append(word)

给出

>>> distribs
['beta', 'binomial', 'chisquare', 'exponential', 'f', 'gamma', 'geometric', 'gumbel', 'hypergeometric', 'laplace', 'logistic', 'lognormal', 'logseries', 'negative_binomial', 'noncentral_chisquare', 'noncentral_f', 'normal', 'pareto', 'poisson', 'power', 'rayleigh', 'triangular', 'uniform', 'vonmises', 'wald', 'weibull', 'zipf', 'dirichlet', 'multinomial', 'multivariate_normal', 'standard_cauchy', 'standard_exponential', 'standard_gamma', 'standard_normal', 'standard_t']

编辑:偶然包含标题。

edit2:Soravux是对的,这很糟糕,不可能永远工作。