使用for循环构造矩阵

时间:2017-09-12 16:46:28

标签: python numpy matrix scipy

我计算了9个名为sij的矩阵元素,其中i和j是变量(i,j = [1,2,3])。这里,i表示行和j列。假设我想要一个由矩阵元素s11,s12,... s32,s33(总共九个元素)组成的3x3矩阵。

matrix = [[s11, s12, s13], [s21, s22, s23], [s31, s32, s33]]

如何使用for循环从这些元素构造矩阵?像这样:

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

所以我得到一个看起来像这样的矩阵。

----------------------------------
PeopleID| Type| AreaCode| Number|
----------------------------------
3553187 | Work| 651     | (651)848-7107
2574269 | NULL| 763     | 763-764-7353
2574269 | Work| 763     | 763-764-7600
3078853 | Cell| 416     | 416-996-2538

2 个答案:

答案 0 :(得分:1)

我会考虑将sij重命名为s[i][j]。然后在循环中使用它们将是微不足道的。

s[1][1] = 1
s[1][2] = 2
s[1][3] = 3
(...)
s[3][3] = 9

然后:

而不是:

matrix = [[s11, s12, s13], [s21, s22, s23], [s31, s32, s33]]

您可以使用以下两个嵌套循环来构造矩阵。

for i in (1,4):
   for j in (1,4):
顺便说一下,基于 0的编号会更像Pythonic。

答案 1 :(得分:0)

你最好编写一个数组并重新整形,这样你就不需要输出元素到变量,但这里是一个单行

>> np.reshape([eval('s{0}{1}'.format(x,y)) for x in range(1,4) for y in range(1,4)], (3,3))
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]]