如何获取in the docs所述的可用numpy.random
发布列表?
我正在编写一个产生噪音的命令行实用程序。我想获取每个可用的发行版,并获取所需的参数以生成命令行选项。
我几乎可以这样做:
import numpy as np
distributions = filter( lambda elt: not elt.startswith("__"), dir(np.random) )
...但是这个列表包含额外的东西(例如shuffle,get_state),这些东西不是发行版。
答案 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是对的,这很糟糕,不可能永远工作。