我正在尝试使用numpy加载表格数据文本文件
import numpy as np
def test(nomFichier):
phase=np.loadtxt(nomFichier,
dtype={'names': ('a', 'b', 'c', 'd', 'e'),
'formats': (np.float, np.float, np.float, np.float, '|S15')},
delimiter='\t', skiprows=0)
return phase
test=calculF(PATH)
编译此代码时出现此错误
invalid literal for float(): 0.00000000E+00 2.63580317992E+02 2.63487929269E+02 2.63534123066E+02 0.00000000000E+00
我不明白,因为当我测试这些数字是否被python识别时,它运作良好。
答案 0 :(得分:1)
如果省略delimiter
参数,它将默认使用任何空格,您不必关心分隔符是制表符还是空格 - http://docs.scipy.org/doc/numpy/reference/generated/numpy.loadtxt.html
答案 1 :(得分:1)
这是平面文件的示例
1.74954955E+02 3.71345899229E-01 3.12953794281E-01 -1.25231427371E-02 0.00000000000E+00
1.75135135E+02 3.73971853521E-01 3.13682391117E-01 -2.64543909236E-02 0.00000000000E+00
它由一连串的空格(5)分开,每行以4个空格开头
我刚刚删除了开头的空格,并在表格中转换了其他空格,如下所示:
with open(nomFichier) as f:
f=(line.replace(' -',' -').replace(' ','\t').replace(' ','') for line in f)
phase=np.loadtxt(f,delimiter='\t',
dtype={'names': ('ang', 'p1', 'p2', 'p3', 'p4'),
'formats': (np.float, np.float, np.float, np.float, '|S15')}, skiprows=0)
return phase