无法获得float数组(float()的文字无效)

时间:2015-05-28 07:15:26

标签: python numpy

我正在尝试使用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识别时,它运作良好。

2 个答案:

答案 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