生成一个2次幂的NumPy数组

pokxtpni  于 2023-03-23  发布在  其他
关注(0)|答案(6)|浏览(141)

通常,在创建某些数字序列时,python和numpy提供了一些语法糖,以简单的方式来实现,而无需使用for循环来生成它们,例如range(start, stop, step)
我有一个相当简单的问题,我正在努力以一种优雅的方式解决:生成一个2的幂的列表。例如list = [1, 2, 4, 8, ...]
我想出了

n_powers = 4
list = np.zeros(n_powers)
for i in range(0, n_powers): 
    list[i] = 2 ** i

有没有更好的办法?

ycggw6v2

ycggw6v21#

你似乎在使用NumPy,那么为什么不这样做呢-

>>> 2 ** np.arange(4)
array([1, 2, 4, 8])

这是广播求幂。

blmhpbnm

blmhpbnm2#

也许只是:

l = [2**i for i in range(n)]
laik7k3q

laik7k3q3#

limit = int(input('Limit: '))
l = []

for i in range(limit):
    l.append(2**i)

最好不要将list用作变量,因为它是一种数据类型,并且具有内置的list()函数

bn31dyow

bn31dyow4#

我不知道你的问题是什么,你可以这样做:

n_powers = 4
list = []
for i in range(n_powers):
    list.append(2 ** i)
print(list)
qacovj5a

qacovj5a5#

根据documentation,您可以使用power()函数在numpy中增加所需的功率。
也就是说,为了增加2的幂,你可以使用这个:np.power(np.arange(4), 2)

cwdobuhd

cwdobuhd6#

在这个问题的情况下(2的幂),你可以使用下面的Numpy方法。

np.exp2(np.arange(4))

Out: array([1., 2., 4., 8.])

相关问题