生成矢量的力量,并以一种简洁的方式将其置于numpy的矩阵中

Los*_*st1 0 python numpy

我想写一个函数,它接收一个numpy数组(更方便的)和数字.

该函数应返回此幂的矩阵,从0到n.

例如,如果我输入[1,2]和3,矩阵应该返回

np.matrix([[1,1],[1,2],[1,4],[1,8]])

我知道我可以编写一个循环来执行此操作,但是有更简洁/快速的方法吗?有没有办法用发电机写这个?

Div*_*kar 5

你可以使用broadcasting-

In [60]: [1,2]**np.arange(4)[:,None]
Out[60]: 
array([[1, 1],
       [1, 2],
       [1, 4],
       [1, 8]])
Run Code Online (Sandbox Code Playgroud)

更紧凑的一个,np.vander因为这基本上是一个vandermode矩阵 -

In [78]: np.vander([1,2],4,1).T
Out[78]: 
array([[1, 1],
       [1, 2],
       [1, 4],
       [1, 8]])
Run Code Online (Sandbox Code Playgroud)

对于matrix类型 -

In [61]: np.asmatrix([1,2]**np.arange(4)[:,None])
Out[61]: 
matrix([[1, 1],
        [1, 2],
        [1, 4],
        [1, 8]])
Run Code Online (Sandbox Code Playgroud)

  • jeeze,太好了! (2认同)