【问题标题】:Python matrix indexingPython矩阵索引
【发布时间】:2017-01-31 13:48:08
【问题描述】:

我有以下代码

l = len(time)     #time is a 300 element list
ll = len(sample)  #sample has 3 sublists each with 300 elements

w, h = ll, l 
Matrix = [[0 for x in range(w)] for y in range(h)]

for n in range(0,l):

    for m in range(0,ll):

        x=sample[m]
        Matrix[m][n]= x

当我运行代码来填充矩阵时,我收到一条错误消息,说“列表索引超出范围”我输入了一个打印语句来查看错误发生的位置以及当 m=0 和 n=3 时矩阵消失索引。

根据我对代码第四行的理解,我初始化了一个 3X300 矩阵,那么为什么它在 0X3 处超出索引?

【问题讨论】:

    标签: python arrays list matrix indexing


    【解决方案1】:

    你需要把Matrix[m][n]= x改成Matrix[n][m]= x

    【讨论】:

      【解决方案2】:

      嵌套列表的索引是由外而内发生的。因此,对于您的代码,您可能需要:

      Matrix[n][m] = x
      

      如果您更喜欢其他顺序,您可以以不同的方式构建矩阵(在列表推导中交换 wh)。

      请注意,如果您要使用此矩阵进行数学运算,您可能希望使用 numpy 数组而不是 Python 列表。几乎可以肯定,它们在进行数学运算方面会比您用纯 Python 自己编写的任何东西都更有效率。

      【讨论】:

        【解决方案3】:

        请注意,Python 中嵌套列表的索引是从外向内进行的,因此您必须更改索引到数组中的顺序,如下所示:

        Matrix[n][m] = x
        

        对于数学运算和矩阵运算,使用numpy 二维数组几乎总是更好的选择。你可以阅读更多关于他们的信息here

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-12-28
          • 1970-01-01
          • 2019-10-20
          • 1970-01-01
          • 2012-11-06
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多