我想写一个函数,它接收一个numpy数组(更方便的)和数字.
该函数应返回此幂的矩阵,从0到n.
例如,如果我输入[1,2]和3,矩阵应该返回
np.matrix([[1,1],[1,2],[1,4],[1,8]])
我知道我可以编写一个循环来执行此操作,但是有更简洁/快速的方法吗?有没有办法用发电机写这个?
你可以使用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)