使用不同的步骤创建numpy数组

时间:2014-10-07 15:03:41

标签: python arrays numpy sequence

我想创建一个如下所示的数组:

# 0 | 4 | 8 | 16 | 32

其中,除第一个元素之外的每个元素都是前一个元素的两倍。 我可以通过迭代创建这个更小的等等。

然而,由于Python提供了许多单线函数,我想知道是否有一个允许我这样做。

3 个答案:

答案 0 :(得分:6)

可能是一行,但这更明确:

x = np.multiply.accumulate( np.ones( 10 )*2)
x[0] = 0

OR

x  = 2**np.arange(1,10)
x[0] = 0

答案 1 :(得分:2)

您可以使用numpy.logspace获取对数间隔范围。使用base=N关键字参数设置指数的基数:

In [27]: np.logspace(0, 10, 11, base=2).astype(int)
Out[27]: array([   1,    2,    4,    8,   16,   32,   64,  128,  256,  512, 1024])

我喜欢这种方法,因为" logspace"函数名称清楚地表明我选择了一个带有log(而不是线性)间距的范围。

答案 2 :(得分:1)

import numpy as np

您可以使用列表推导来评估您的幂函数(在这种情况下为2^n),然后从中生成numpy.array

>>> np.array([0] + [2**i for i in range(2, 10)])
array([  0,   4,   8,  16,  32,  64, 128, 256, 512])