python - Numpy csv 脚本给出 'ValueError: setting an array element with a sequence'

标签 python arrays csv numpy

我有一个 python 脚本,它成功地将 csv 文件加载到 2d numpy 数组中,然后根据其列和行标题值成功提取所需单元格的值。出于诊断目的,我让脚本在将数据矩阵放入 numpy 数组之前打印数据矩阵的内容。当来自底层 csv 文件的数据包含所有行/列的值时,该脚本起作用。问题是当我在一个 csv 文件上运行脚本时它会抛出一个错误,该 csv 文件显然在 csv 文件的末尾有几个空行/列。我试图通过在 Notepad++ 中打开 csv 文件并从文件末尾删除尽可能多的内容来解决这个问题。 Notepad++ 让我在末尾删除一行,但没有提示有任何空列。在深入检查 python 打印输出与我的基础数据结构之间的关系后,我发现 python 打印命令表示数组末尾有两个空列。无论如何,在编辑 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。

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

关于python - Numpy csv 脚本给出 'ValueError: setting an array element with a sequence',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3835083/

相关文章:

python - 如何修剪 csv 文件中的前导和尾随空格?

Python pandas 删除具有列值 "NaN"的重复行

python - 使用 Pandas 编辑 CSV 文件中的数据

Java、Csv 到 json、jackson-dataformat-csv

php - 使用子数组中的值将多维数组转换为单维数组

java - 引用数组的一个元素

从c中的数组语法计算地址

python - 如何在Python中向数字字符串中插入数字?

python - 检测图中的循环

python - 将条件语句应用于数据帧的所有值