Python 矩阵形成
我想写一个看起来像这样的Python矩阵:
[P1^3,p2^3,p3^3,p4^3 ...]
[p1^2,p2^2,p3^2,p4^2 ...]
[p1^1,p2^1,p3^1,p4^1 ...]
[p1^0,p2^0,p3^0,p4^0 ...]
这个矩阵的列数和
p
的索引是由输入的i决定的,输入来自于pi。我尝试了很多方法,但都没有成功。
有人能帮帮我吗?
2 个回答
0
[[y^x for y in [p1, p2, p3, p4]] for x in [3, 2, 1, 0]]
可能是你想要的结果。
这个表达式展开后是
[[y^3 for y in [p1, p2, p3, p4]],
[y^2 for y in [p1, p2, p3, p4]],
[y^1 for y in [p1, p2, p3, p4]],
[y^0 for y in [p1, p2, p3, p4]]]
注意,^
在 Python 中表示的是异或运算。
我不太确定你想要得到什么...
另外,你是指 numpy 矩阵/数组,还是嵌套列表呢?
4
如果你真的想用 **
而不是 ^
,你可以用一个简单的函数来实现,那个函数叫 numpy.vander
(这是来自 numpy
库的,http://www.numpy.org/):
In [13]: p = numpy.array([2, 3, 5, 10])
In [14]: numpy.vander(p, 4).T
Out[14]:
array([[ 8, 27, 125, 1000],
[ 4, 9, 25, 100],
[ 2, 3, 5, 10],
[ 1, 1, 1, 1]])
在调用这个函数后加上 .T
是为了转置数组,因为 numpy.vander
创建的数组是你想要的结果的转置。