索引器错误:列表索引超出范围Python inputMat

索引器错误:列表索引超出范围Python inputMat,python,numpy,Python,Numpy,您将在此行中引发异常: import numpy as np from sys import argv script, filename = argv txt = open(filename) header = txt.readline().split() inputArray = map(float, txt.readline().split()) txt.close() inputMat = np.mat(inputArray) inputMat.reshape(int(header

您将在此行中引发异常:

import numpy as np
from sys import argv

script, filename = argv

txt = open(filename)

header = txt.readline().split()
inputArray = map(float, txt.readline().split())
txt.close()

inputMat = np.mat(inputArray)
inputMat.reshape(int(header[0]), int(header[1]))
inputMat.shape()

#takes q2data as input
def first(A):
    #Decomposes a nxn matrix A by PA=LU and returns L, U and P.
    n = len(A)
    L = [[0.0] * n for i in xrange(n)]
    U = [[0.0] * n for i in xrange(n)]

    #Creates the pivoting matrix for m.
    n = len(A)
    ID = [[float(i == j) for i in xrange(n)] for j in xrange(n)]
    for j in xrange(n):
        row = max(xrange(j, n), key=lambda i: abs(A[i][j]))
        if j != row:
            ID[j], ID[row] = ID[row], ID[j]
    p = ID

    #perform matrix multplication
    TA = zip(*A)
    A2 = [[sum(eP*ea for eP,ea in zip(P,a)) for a in TA] for P in p]

    for j in xrange(n):
        L[j, j] = 1.0
        for i in xrange(j+1):
            s1 = sum(U[k, j] * L[i, k] for k in xrange(i))
            U[i, j] = A2[i, j] - s1
        for i in xrange(j, n):
            s2 = sum(U[k, j] * L[i, k] for k in xrange(j))
            L[i, j] = (A2[i, j] - s2) / U[j, j]
    return (L, U, p)

print (first(inputMat))

在使用列表之前,您需要确保列表
标题的长度实际上为2。发生的情况是,在执行
拆分()时,输入文本文件
文件名
的第一行包含的单词少于2个。错误消息中简单描述了错误:

inputMat.reshape(int(header[0]), int(header[1]))
因此,在执行此操作时,您需要确保标题列表至少包含两个元素:

myList = [1,2,3]
print myList[0]
print myList[1]
print myList[2]
print myList[3]# This will throw an IndexError exception like yours,

在你的
文件名
中肯定有行或者第一行的元素少于两个。

谢谢,我的文本文件被弄乱了,但是这次我得到了一个不同的错误:C:\Python34>python first.py q2data.txt回溯(最近的最后一次调用):文件“first.py”,第13行,在inputMat.reforme(int(header[0]),int中(header[1])ValueError:新数组的总大小必须保持不变信息如下:如果数组的形状意味着更改元素总数,则不能更改数组的形状。例如,如果数组的形状为(2,4)(2x4=8个元素),则只能将其形状更改为(8,1),因为该数组也将包含8个元素。
File "first.py", line 13, in <module>
    inputMat.reshape(int(header[0]), int(header[1]))
IndexError: list index out of range
myList = [1,2,3]
print myList[0]
print myList[1]
print myList[2]
print myList[3]# This will throw an IndexError exception like yours,
header = txt.readline().split()