Python 打一个「;“对数空间内的线性”;类似于[1,2,3,…,10,20,30,…]的数组

Python 打一个「;“对数空间内的线性”;类似于[1,2,3,…,10,20,30,…]的数组,python,arrays,numpy,Python,Arrays,Numpy,我试图运行一个特定的模拟,以一个参数作为输入。我需要对一系列不同的参数值运行它,这些参数值跨越几个数量级,但也给出了每个数量级内变化的图片 简而言之,我需要我的参数取值param=[1,2,3,…9,10,20,30,…,90,100,200,…] 我已经尝试着回答了我自己的问题,但是在numpy有没有更直接的方法来做到这一点,这也让意图更加清晰?目前,我最好的尝试是: >>> a = np.arange(1, 10) >>> b = np.logspace(

我试图运行一个特定的模拟,以一个参数作为输入。我需要对一系列不同的参数值运行它,这些参数值跨越几个数量级,但也给出了每个数量级内变化的图片

简而言之,我需要我的参数取值
param=[1,2,3,…9,10,20,30,…,90,100,200,…]


我已经尝试着回答了我自己的问题,但是在numpy有没有更直接的方法来做到这一点,这也让意图更加清晰?

目前,我最好的尝试是:

>>> a = np.arange(1, 10)
>>> b = np.logspace(0, 4, num=5)
>>> result = (a[np.newaxis, :] * b[:, np.newaxis]).flatten()
>>> result
array([  1.000e+00,   2.000e+00,   3.000e+00,   4.000e+00,   5.000e+00,
         6.000e+00,   7.000e+00,   8.000e+00,   9.000e+00,   1.000e+01,
         2.000e+01,   3.000e+01,   4.000e+01,   5.000e+01,   6.000e+01,
         7.000e+01,   8.000e+01,   9.000e+01,   1.000e+02,   2.000e+02,
         3.000e+02,   4.000e+02,   5.000e+02,   6.000e+02,   7.000e+02,
         8.000e+02,   9.000e+02,   1.000e+03,   2.000e+03,   3.000e+03,
         4.000e+03,   5.000e+03,   6.000e+03,   7.000e+03,   8.000e+03,
         9.000e+03,   1.000e+04,   2.000e+04,   3.000e+04,   4.000e+04,
         5.000e+04,   6.000e+04,   7.000e+04,   8.000e+04,   9.000e+04])

您可以使用两个循环轻松创建这样的阵列:

param = [multiplier * magnitude for magnitude in [1, 10, 100] for multiplier in [1, 2, 3, 4, 5, 6, 7, 8, 9]]

如果你认为可以改进的工作代码,考虑一下。如果没有,请澄清问题并将答案放在问题中,而不是作为答案。@jornsharpe-Hmm。。。这很公平。但是如果我没有把它称为“尝试”,你可以考虑如何对待问题/答案对,而只是把它作为一个问答题——一个我认为是……的练习。你愿意讨论一下吗?我不会以任何不同的方式对待它;请注意,自答问题仍必须符合网站的质量指南。“我该怎么做…?”通常不会。如果你对此有问题,请向Meta提出。@jonrsharpe,但有不少规范问题的形式是“我该怎么做…”。我离题了,也许这在聊天中讨论得更好,但我在“相关”侧边栏上看到的几个高度评价的问题,我并不特别想在这里明确链接,正是这种格式。对于一个专业而热情的程序员来说,询问同龄人他们将使用什么方法,同时陈述他们自己的方法是不合适的吗?请注意,这不是一个固执己见的问题。我认为这在这里是可以的,但如果您愿意,可以很容易地将其转化为代码审查问题并进行迁移。我喜欢这样-这肯定会让意图更加清晰。