如何更优雅地构造2的幂的numpy数组?

时间:2019-05-09 15:49:26

标签: python numpy jupyter-notebook numpy-ndarray

我想弄清楚如何创建此数组而不用将每一个单独的值都放在手中。

有没有一种方法可以使用除第一个值以外的每个值都是其前身值的两倍的信息?

我的代码如下:


import numpy as np

Matrix = np.array([1,2,4,8,16,32,64,128,256]).reshape (3,3)

print(Matrix)

4 个答案:

答案 0 :(得分:4)

您可以使用np.arange,并利用它们是2的力量这一事实:

2**np.arange(9).reshape(-1, 3)

array([[  1,   2,   4],
       [  8,  16,  32],
       [ 64, 128, 256]], dtype=int32)

答案 1 :(得分:1)

您还可以执行以下操作:

var myRandomArray = [1];
var i = 1;
var num = 1;
while (i < 9) {
  myRandomArray.push(num = num * 2);
  i = i + 1;
}

这是用JavaScript编写的。对于Python,只需切换所需的内容,主要思想仍然存在。我相信Python,它是添加而不是推送。

答案 2 :(得分:1)

您可以使用np.vander

np.vander([2], 9, True).reshape(3, 3)
# array([[  1,   2,   4],
#        [  8,  16,  32],
#        [ 64, 128, 256]])

答案 3 :(得分:0)

这是陪审团操纵的解决方案:

In [10]: total_num = 9 

In [11]: np.array([2**n for n in range(0, total_num)]).reshape(3, -1) 
Out[11]: 
array([[  1,   2,   4],
       [  8,  16,  32],
       [ 64, 128, 256]])