2015-05-28 2 views
-1

Я пытаюсь загрузить табличный текстовый файл данных с 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

не те пространства вместо вкладок? – Aprillion

+0

Попробуйте открыть файл и использовать readlines для печати первой пары из них. Я бы предположил, что в качестве разделителей больше символов, чем '\ t'. – Jblasco

+0

, наконец, он работает, я изменил разделитель в исходном файле – SOCKet

ответ

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