如何在Numpy的矩阵中计算xi ^ j

时间:2019-03-30 20:47:05

标签: python python-3.x numpy

我正在尝试根据输入的数组计算矩阵。

我希望能够输入

a = [0,1,2]

在python中,想用Numpy对其进行整形,以使结果是数组在第i行和第j列的形式为x_i ^ j,

例如 输入是:

    a = [0,1,2]

,输出应为

[[1,0,0],
 [1,1,1],
 [1,2,4]]

并且我使用了以下代码

 xij = np.matrix([np.power(xi,j) for j in x for xi in x]).reshape(3,3)

[[ 1,  2,  3],
 [ 1,  4,  9],
 [ 1,  8, 27]]

我认为我为Numpy使用了错误的公式, 请您能协助我解决问题。 预先感谢

2 个答案:

答案 0 :(得分:1)

您需要使用range(len(a))来获取指数和for循环的正确顺序

a = [0,1,2]

xij = np.matrix([np.power(xi,j) for xi in a for j in range(len(a))]).reshape(3,3)

# matrix([[1, 0, 0],
#         [1, 1, 1],
#         [1, 2, 4]])

答案 1 :(得分:0)

使用阵列广播:

In [823]: np.array([0,1,2])**np.arange(3)[:,None]                               
Out[823]: 
array([[1, 1, 1],
       [0, 1, 2],
       [0, 1, 4]])

In [825]: np.array([1,2,3])**np.arange(1,4)[:,None]                             
Out[825]: 
array([[ 1,  2,  3],
       [ 1,  4,  9],
       [ 1,  8, 27]])