在"线性日志空间"类似于[1,2,3,...,10,20,30,...]的数组

时间:2016-02-04 23:05:55

标签: python arrays numpy

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

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

我已尝试回答了我自己的问题,但有没有更简单的方法在numpy中做到这一点,这也使意图更清晰了?

2 个答案:

答案 0 :(得分:2)

您可以使用两个循环轻松制作这样的数组:

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

答案 1 :(得分:0)

目前,我最好的尝试是:

>>> 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])