我正在阅读Kinder和Nelson的《Python物理建模学生指南》。在第3章的开头是关于下载可用于实践的准备好的数据集的信息。数据集位于press.princeton.edu/titles/10644.html的zip文件中。我试图从zip文件中使用的数据集是HIVseries.csv。该文件包含16行代码,如下所示:
0, 1.061e+05
0.0831, 93240
0.1465, 1.6672e+05
0.2587, 1.5378e+05
0.4828, 1.188e+05
0.7448, 1.169e+05
0.9817, 1.0957e+05
1.2563, 1.1135e+05
1.4926, 74388
1.7299, 83291
1.9915, 66435
3.0011, 35408
4.0109, 21125
5.009, 20450
5.9943, 15798
7.0028, 4785.2
它是两列数字,用逗号分隔。在第48页和第49页,本书指示我加载数据集,并使用以下命令将数据生成为数组:
import numpy as np
data_set=np.loadtxt("HIVseries.csv", delimiter=',')
my_file=open("HIVseries.csv")
temp_data=[]
for line in my_file:
print(line)
x, y = line.split(',')
temp_data +=[(float(x), float(y))]
my_file.close()
data_set=np.array(temp_data)
当我运行这些命令时,我不断得到以下错误: ValueError:没有足够的值来解包(预期值为2,实际值为1)
我不明白为什么我会犯这个错误。line.split命令清楚地告诉Python使用文件中的逗号分隔数据。此外,我完全按照书上所说的输入所有内容。它怎么能告诉我只有一个价值,而实际上有两个价值
我终于明白了。数据文件在数据前有几行空白。Python在读这些行,好像它们有什么意思
错误的原因很可能是文件中有一些没有逗号的额外行,当到达该行时,它抛出了您共享的错误(在我这方面,当使用您共享的文本运行代码时,它是有效的,但是如果例如我在末尾附加了一些空行,它抛出了相同的错误)
要进行调试,您可以在
x, y = line.split(',')
,import pdb; pdb.set_trace()
之前再插入一行,然后再次运行该程序。这样,程序将在x, y = line.split(',')
之前暂停,并给您一个运行交互式代码的机会。例如,您可以查看每个line
的外观以及哪个是抛出错误的相关问题 更多 >
编程相关推荐