我试图运行一个以一个参数作为输入的模拟。我需要为一系列不同的参数值运行它,这些参数值跨越几个数量级,但也给出了每个数量级内变化的图片。
简而言之,我需要我的参数取值param = [1, 2, 3, ... 9, 10, 20, 30, ..., 90, 100, 200, ...]
。
我已尝试回答了我自己的问题,但有没有更简单的方法在numpy中做到这一点,这也使意图更清晰了?
答案 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])