所以,我一直在編寫代碼來讀取文件中的數據集並將其分離出來用於分析。numpy.genfromtxt- ValueError-行號(獲得n列而不是m)
有問題的數據是從.dat文件閱讀,看起來是這樣的:
14 HO2 O3 OH O2 O2
15 HO2 HO2 H2O2 O2
16 H2O2 OH HO2 H2O
17 O O O2
18 O O2 O3
19 O O3 O2 O2
的代碼我已經寫了這個樣子的:
edge_data=np.genfromtxt('Early_earth_reaction.dat', dtype = str,
missing_values=True, filling_values=bool)
的計劃是我然後運行數據集中的值並從中構建配對列表。
edge_list=[]
for i in range(360):
edge_list.append((edge_data[i,0],edge_data[i,2]))
edge_list.append((edge_data[i,1],edge_data[i,2]))
print edge_data[i,0]
if edge_data[i,3] != None:
edge_list.append((edge_data[i,0],edge_data[i,3]))
edge_list.append((edge_data[i,1],edge_data[i,3]))
if edge_data[i,4]!= None:
edge_list.append((edge_data[i,0],edge_data[i,4]))
edge_list.append((edge_data[i,1,edge_data[i,4]))
然而,在運行它,我得到錯誤信息
File "read_early_earth.py", line 52, in main
edge_data=np.genfromtxt('Early_earth_reaction.dat', dtype = str,
usecols=(1,2,3,4,5), missing_values=True, filling_values=bool)
File "/usr/lib/python2.7/dist-packages/numpy/lib/npyio.py", line 1667,
in genfromtxt
raise ValueError(errmsg)
ValueError: Some errors were detected !
Line #6 (got 4 columns instead of 5)
Line #14 (got 6 columns instead of 5)
Line #17 (got 4 columns instead of 5)
等等等等。據我所知,發生這種情況的原因是,有些行並不是所有的列都有值,這顯然會引起循環的顛簸。
在numpy中有沒有解決這個問題的方法?或者,是否有另一種方式來完成這項任務?我知道,情況變得更糟,我可以折磨一些正則表達式來完成這項工作,但我更喜歡一種更有效的方法,如果可能的話。
謝謝!