在Python中创建一个具有不同增量的数组

Rud*_*ard 2 python arrays numpy

在Python中,我知道如何创建一个从某个值a开始的数组,将其上的每个组件增加一些m,直到达到某个值b:

array = numpy.arange(a, b, m)

但是,如果我想让m改变怎么办?具体来说,我想要数组 1,2,...9,10,20,...90,100,200,...900,1000..

因此,每十个组件将我的增量增加 10 倍。实现这一目标的最简单方法是什么?如果必须的话,我可以使用循环并“手动”执行此操作,但是有更好的方法吗?

And*_*Guy 6

您可以利用 numpy 的广播在几行内实现此目的。您可以创建一个给出 1-9 的数组,然后将其与一个给出 10 的幂的数组相乘。然后,您可以展平最终的数组以获得所需的列表。

>>> a = np.arange(1,10)
>>> b = 10**np.arange(4)
>>> (b[:, np.newaxis] * a).flatten()

array([   1,    2,    3,    4,    5,    6,    7,    8,    9,   10,   20,
     30,   40,   50,   60,   70,   80,   90,  100,  200,  300,  400,
    500,  600,  700,  800,  900, 1000, 2000, 3000, 4000, 5000, 6000,
   7000, 8000, 9000])
Run Code Online (Sandbox Code Playgroud)