Python 使用for循环构造矩阵

Python 使用for循环构造矩阵,python,numpy,matrix,scipy,Python,Numpy,Matrix,Scipy,我计算了9个名为sij的矩阵元素,I和j是变量(I,j=[1,2,3])。这里,我表示行和j列。假设我想要一个3x3矩阵,它由矩阵元素s11,s12。。。s32,s33(总共九个元素) 如何使用for循环从这些元素构造矩阵?像这样: matrix = [[s11, s12, s13], [s21, s22, s23], [s31, s32, s33]] 所以我得到了一个像这样的矩阵 matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 我会考虑将 SIJ 改为

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

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

matrix = [[s11, s12, s13], [s21, s22, s23], [s31, s32, s33]]
所以我得到了一个像这样的矩阵

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

<>我会考虑将<代码> 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的编号将更具python风格。

您最好编写一个数组并重新调整其形状,这样您就不需要将元素键入变量,但这里有一个单行线

>> 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]]

使用
np.array
/
np.matrix
包装器?您的全局范围内只有一堆这样的变量吗?为什么不在生成它们时将它们添加到
列表中
,然后将该列表传递给
np.array
构造函数?
>> 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]]