2016-03-21 4 views
0

I, in der eine Datei zu laden, ich versuche, die Zahlen in der folgenden Form sind:Laden Array-Datei mit anderem Nummerierungsformat

0.0000000D+00 -0.1145210D-16 0.1262408D-16 
    0.1000000D+00 -0.4697286D-06 0.1055963D-06 
    0.2000000D+00 -0.1877806D-05 0.4220493D-06 
    0.3000000D+00 -0.4220824D-05 0.9482985D-06 

Ich versuche, die numpy.loadtext Funktion, aber es ist offenbar nicht in seinen anerkannten wie ich die folgende Fehlernummerierungsformat bin immer:

Valueerror: string nicht konvertieren konnte zu schweben: b'0.0000000D + 00'

Jede Idee?

Dank

+0

Ich bin nicht vertraut, aber ist D-Bezeichnung für Dezimal - nicht Float? –

+0

Welche Sprache verwenden Sie? – saravanakumar

+0

Python. Diese Bezeichnung entspricht 0,0000000E + 00 -0,1145210E-16 0,1262408E-16 –

Antwort

0

Sie können einen Konverter mit numpy.loadtxt verwenden, um den Wert zu einem parsable Schwimmer umwandelt. In diesem Fall ersetzen wir trivial durch E;

import numpy as np 

numconv = lambda x : str.replace(x.decode('utf-8'), 'D', 'E') 
np.loadtxt('test.txt', converters={0:numconv, 1:numconv, 2:numconv}, dtype='double') 

# array([[ 0.00000000e+00, -1.14521000e-17, 1.26240800e-17], 
#  [ 1.00000000e-01, -4.69728600e-07, 1.05596300e-07], 
#  [ 2.00000000e-01, -1.87780600e-06, 4.22049300e-07], 
#  [ 3.00000000e-01, -4.22082400e-06, 9.48298500e-07]])