如何获取文档numpy.random
中描述的可用发行版列表?
我正在编写一个会产生噪音的命令行实用程序。我想获取每个可用的发行版,并获取它们所需的参数以生成命令行选项。
我几乎可以做这样的事情:
import numpy as np
distributions = filter( lambda elt: not elt.startswith("__"), dir(np.random) )
...但是此列表包含不是分发的额外内容(例如,shuffle、get_state)。
正如他们在文档中所做的那样,您必须手动列出它们。这是确保您不会获得将在未来版本的 numpy.xml 中添加的不良功能的唯一方法。如果您不关心未来的添加,您可以过滤掉不是分布的函数名称。
他们很乐意在模块文档import numpy as np; print(np.random.__doc__)
(他们定义了列表 ( np.random.__all__
),这可能是另一种有趣的迭代可能性。
您的问题表明,应该审查 numpy 的命名约定,以包括类似性质的函数的前缀或将它们分组到子模块中。
可能是一种更漂亮的方式,但是:
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']
编辑:意外包含标题。
编辑2:Soravux 说得对,这很糟糕,而且不太可能永远有效。