Python矩阵索引

Python矩阵索引,python,arrays,list,matrix,indexing,Python,Arrays,List,Matrix,Indexing,我有以下代码 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[

我有以下代码

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
当我运行代码填充矩阵时,我会收到一条错误消息,说“列表索引超出范围”,我在print语句中输入了一条,以查看错误发生的位置,当m=0和n=3时,矩阵超出了索引


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

你需要将
矩阵[m][n]=x
更改为
矩阵[n][m]=x

你需要将
矩阵[m][n]=x
更改为
矩阵[n][m]=x

嵌套列表的索引是从外到内进行的。因此,对于您的代码,您可能需要:

Matrix[n][m] = x
如果您喜欢其他顺序,则可以以不同的方式构建矩阵(在列表理解中交换
w
h


请注意,如果要使用此矩阵进行数学运算,可能需要使用
numpy
数组而不是Python列表。几乎可以肯定的是,它们在做数学运算时比用纯Python编写的任何东西都要有效得多。

嵌套列表的索引是从外部到内部进行的。因此,对于您的代码,您可能需要:

Matrix[n][m] = x
如果您喜欢其他顺序,则可以以不同的方式构建矩阵(在列表理解中交换
w
h


请注意,如果要使用此矩阵进行数学运算,可能需要使用
numpy
数组而不是Python列表。几乎可以肯定的是,它们在做数学运算时比用纯Python编写的任何东西都要有效得多。

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

Matrix[n][m] = x

对于数学运算和矩阵操作,使用
numpy
二维数组几乎总是一个更好的选择。您可以阅读更多有关它们的信息。

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

Matrix[n][m] = x
对于数学运算和矩阵操作,使用
numpy
二维数组几乎总是一个更好的选择。你可以阅读更多关于他们的信息