Чтение данных в экспоненциальном формате в python (numpy) - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь прочитать данные, но в первом столбце есть данные в формате exp, который не позволяет мне прочитать файл, вот минимальный рабочий пример моего кода, а вот ссылка datafile за попытку кода

import numpy as np
filename ="0 A.dat"
data = np.loadtxt(filename, delimiter=',', skiprows=3)

но я получаю эту ошибку ValueError: не удалось преобразовать строку в число с плавающей точкой:

Ответы [ 2 ]

0 голосов
/ 22 января 2020
import numpy as np

def yesfloat(string):
    """ True if given string is float else False"""
    try:
        return float(string)
    except ValueError:
        return False

data = []
with open('0 A.dat', 'r') as f:
    d = f.readlines()
    for i in d:
        k = i.rstrip().split(",")
        data.append([float(i) if yesfloat(i) else i for i in k]) 

data = np.array(data, dtype='O')
data

Я не знаю, является ли это ответом, который вы ищете, но я попробовал его с вашими данными, и он возвратил этот массив ([list (['% Version 1.00']), list (['% ']), list (['% freq [Гц] \ tTrc1_S21 [дБ] \ tTrc2_S21 [U] \ tTrc3_S21 [U] \ tTrc4_S21 [U] ']), ..., список ([9998199819.981998, -22.899369289513151011) , -0,0618770495057106, -0,03606368601322174, '']), список ([+9999099909,991, -22,91188769540125, +0,07151639513438152, -0,06464007496833801, -0,03059829212725163, '']), список ([+10000000000,0, -22,92596306398167, +0,07140059761720122, -0,0669037401676178, -0,02493862248957157, ' '])], dtype = object)

0 голосов
/ 22 января 2020

Вы можете прочитать их с помощью pandas:

import pandas как pd

data = pd.read_csv (имя файла, delimiter = ',', skiprows = 3)

...