我正在尝试根据输入的数组计算矩阵。
我希望能够输入
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使用了错误的公式, 请您能协助我解决问题。 预先感谢
答案 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]])