Python 获取numpy.随机分布的列表

Python 获取numpy.随机分布的列表,python,numpy,random,Python,Numpy,Random,如何获得可用numpy.random发行版的列表 我正在编写一个命令行实用程序,它会产生噪音。我想获取每个可用的发行版,并获取它们生成命令行选项所需的参数 我几乎可以这样做: import numpy as np distributions = filter( lambda elt: not elt.startswith("__"), dir(np.random) ) 。。。但是这个列表包含了额外的东西(例如shuffle、get_state),它们不是发行版。可能是一种

如何获得可用
numpy.random
发行版的列表

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

我几乎可以这样做:

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

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

可能是一种更漂亮的方式,但是:

将numpy导入为np
doc\u string=np.random.\uu doc__
doc\u string=doc\u string.split(“\n”)
distribs=[]
对于文档字符串中的行:
如果“分布”在同一行中:
word=line.split()[0]
如果单词[0]。islower():
distribs.append(word)
给予

编辑:意外地包含标题

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

正如他们在中所做的那样,您必须手动列出他们。这是确保您不会获得将在未来版本的numpy中添加的不需要的函数的唯一方法。如果您不关心将来的添加,那么可以过滤掉不是发行版的函数名

他们很友好地在模块文档中提供了列表(
import numpy as np;print(np.random.\uuu doc\uuuu)
),但如您所示,迭代模块函数要比解析docstring安全得多。他们定义了列表(
np.random.\uuuu all\uuuu
),这可能是另一个有趣的迭代可能性


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

我认为,随着numpy未来版本中添加这些函数,我应该获得更多的发行版。这是动态获取发行版列表的最大好处,而不是依赖静态列表。自动获取新发行版的问题是猜测它们的接口:您将为这些新功能提供什么?有多少个参数?你也会猜到他们的回报范围吗?我会像你建议的那样用一个静态列表。但请看我对主要问题的评论——我认为我应该能够获得函数原型(…或Python中的任何调用),并提取足够的信息来生成命令行选项,前提是用户知道如何处理它们。正如答案所说,问题是numpy并没有以机器可读的方式提供这些信息。即使是这样,要想通过自动化的方式找出传递给每个函数的参数也是一个艰难的猜测游戏。只需使用文档创建您自己的表,其中包含使用哪些参数调用哪些函数即可。@Brenbar这是一个很好的建议。我不同意传递参数。因为这个想法是为我的脚本生成命令行参数,所以必需的参数将是主选项的位置参数,可选参数将是可选的附加选项。问题是,如何知道哪些值适合传递给这些参数?这里的目标是编写一个命令行接口。例如,
--normal
选项将包含两个参数。这使得用户在决定什么是有意义的方面发生了变化。
>>> 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']