【问题标题】:Construct a matrix using a for loop使用 for 循环构造矩阵
【发布时间】:2017-09-12 16:46:28
【问题描述】:

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

s11 = 1
s12 = 2
s13 = 3
(...)
s33 = 9

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

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

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

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

【问题讨论】:

  • 使用np.array/np.matrix 包装器?
  • 您的全局范围内只有一堆这些变量?为什么在生成它们时不直接将它们添加到 list,然后将该列表传递给 np.array 构造函数?

标签: python numpy matrix scipy


【解决方案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。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-21
      • 1970-01-01
      • 2011-09-29
      • 1970-01-01
      • 2013-07-30
      相关资源
      最近更新 更多