Python 矩阵形成

0 投票
2 回答
985 浏览
提问于 2025-04-17 17:46

我想写一个看起来像这样的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 创建的数组是你想要的结果的转置。

撰写回答