Python Numpy csv脚本提供';ValueError:使用序列设置数组元素';

Python Numpy csv脚本提供';ValueError:使用序列设置数组元素';,python,arrays,csv,numpy,Python,Arrays,Csv,Numpy,我有一个python脚本,它成功地将csv文件加载到2d numpy数组中,然后根据所需单元格的列和行标题值成功地提取该单元格的值。出于诊断目的,我让脚本在将数据矩阵放入numpy数组之前打印它的内容。当基础csv文件中的数据包含所有行/列的值时,脚本工作。问题是,当我在csv文件上运行脚本时,它会抛出一个错误,该csv文件的末尾显然有两个空的行/列。我试图通过在Notepad++中打开csv文件并删除尽可能多的内容来解决这个问题。记事本++允许我删除末尾的一行,但没有指出有任何空列。在深入研究

我有一个python脚本,它成功地将csv文件加载到2d numpy数组中,然后根据所需单元格的列和行标题值成功地提取该单元格的值。出于诊断目的,我让脚本在将数据矩阵放入numpy数组之前打印它的内容。当基础csv文件中的数据包含所有行/列的值时,脚本工作。问题是,当我在csv文件上运行脚本时,它会抛出一个错误,该csv文件的末尾显然有两个空的行/列。我试图通过在Notepad++中打开csv文件并删除尽可能多的内容来解决这个问题。记事本++允许我删除末尾的一行,但没有指出有任何空列。在深入研究python打印输出与底层数据结构之间的关系后,我发现python print命令表示数组末尾有两个空列。在任何情况下,在编辑csv文件后,我仍然在运行脚本时打印出相同的数据,并且它仍然抛出相同的错误,就好像我没有删除csv文件末尾的空行一样。我检查是否保存了csv文件,打开和关闭了csv文件几次,关闭和重新打开了python文件几次,但错误仍然存在:

这是我的问题:
如何修改下面的脚本以避免此错误?

这是我上面提到的功能:

def GetHSD_alpha(NumberOfColumnMeans,dfResid):  
    dirname=os.path.dirname(os.getcwd())  
    resources=os.path.join(dirname,'resources')  
    inputfile=os.path.join(resources,'CriticalValuesOfTukeysHSD_a_0_01.csv')  
    separator=','  
    ColumnIndex=NumberOfColumnMeans  
    RowIndex=dfResid  
    cast = p.cast  
    data = [[] for dummy in xrange(13)]  
    for line in open(inputfile, 'r'):  
        fields = line.strip().split(separator)  
        for i, number in enumerate(fields):  
            data[i].append(number)  

    print 'data HSD alpha is:  ',data
    time.sleep(2)

    CriticalValuesArray=p.array(data)
    HSD_alpha_0_01=CriticalValuesArray[ColumnIndex,RowIndex]

return HSD_alpha_0_01
此外,为了便于参考,这里是打印抛出错误的数据的结果的缩写版本。请注意末尾的空元素,在运行脚本之前,我似乎无法手动从csv文件中删除这些元素:

数据HSD alpha为:['''5','6','7'],['2','5.7','5.24','4.95'],['3','6.98','6.33','5.92'],['11','10.48','9.3','8.55'],[],[]]

同样作为参考,这里是从另一个csv文件打印数据的结果的缩写版本,该文件是我为了诊断目的导入到脚本中的。下面打印输出的数据没有导致脚本抛出错误:
数据HSD alpha为:[“1”,“2”,“3”,“1”,“4052”,“98.49”,“34.12”,“2”,“4999”,“99.01”,“30.81”,“3”,“5403”,“99.17”,“29.46']]

同样,当我在Notepad++中打开底层csv文件时,似乎没有任何空列或空行,我仔细检查了这些数据文件

最后,我设想空行/列的数量可能会有所不同,因此任何解决方案都需要能够处理空行/列数量的变量

提前谢谢。

找到了答案。 我需要更改以下代码行:

data = [[] for dummy in xrange(11)]
xrange需要设置为11,而不是13

答案很简单,但需要大量的挖掘。
此线程现在已应答/完成。

为什么要编写自己的csv加载程序? numpy.loadtxt?或者在缺少值的情况下: numpy.genfromtxt