生成向量的幂并将其以简洁的方式放入numpy的矩阵中

时间:2018-08-22 22:41:44

标签: python numpy

我想编写一个函数,该函数采用numpy数组(以更方便的方式为准)和数字。

该函数应返回一个从0到n的幂的矩阵。

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

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

我知道我可以编写一个循环来执行此操作,但是是否有更简洁/快速的方法?有没有办法使用生成器编写代码?

1 个答案:

答案 0 :(得分:5)

您可以使用broadcasting-

In [60]: [1,2]**np.arange(4)[:,None]
Out[60]: 
array([[1, 1],
       [1, 2],
       [1, 4],
       [1, 8]])

使用np.vander的紧凑型打印机,因为它基本上是vandermode矩阵-

In [78]: np.vander([1,2],4,1).T
Out[78]: 
array([[1, 1],
       [1, 2],
       [1, 4],
       [1, 8]])

对于matrix类型-

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