Как быстро преобразовать строку в плавающее - PullRequest
1 голос
/ 26 февраля 2020

У меня есть огромный набор данных, который организован в двумерный массив строк, которые я преобразовываю в числа с плавающей точкой. В настоящее время я выполняю эту операцию, используя вложенные циклы и функцию python float(), но получаю сообщение об ошибке: ValueError: could not convert string to float: 'slow'.

Другие ответы, связанные с этим вопросом, рекомендуют maps(), который я пробовал, но не могу правильно приступить к работе. Закомментировано моя попытка. Это не выдает «медленную» ошибку, но мои данные не отображаются правильно в моей текущей конфигурации. Какими способами можно быстро преобразовать csv строк в float, используя мой csv parser? Я использую свой собственный синтаксический анализатор, потому что файл CSV, который я использую, имеет длинный сложный заголовок. Как улучшить производительность?

    # parse() takes .lvm input as a string and returns a clean 2-D array of data
def parse(self):
    data = self.get_data()
    word = 'Comment'
    start_index = data.find(word) + len(word)
    if start_index != -1:
        data_block = data[start_index:]
        data_list = data_block.split('\n')  # create grid rows
        data_list.pop(0)  # remove first blank value
        data_list.pop(len(data_list) - 1)  # remove last blank value
        for row in range(len(data_list)):
            data_list[row] = data_list[row].split('\t')  # create grid cols
            data_list[row].pop(0)  # remove leading blank values
            for col in range(len(data_list[row])):
                data_list[row][col] = float(data_list[row][col])
                #map(float, data_list)
    return data_list

Пример данных:

Writer_Version  2
Reader_Version  2
Separator   Tab
Decimal_Separator   .
Multi_Headings  No
X_Columns   No
Time_Pref   Absolute
Operator    bowman-lab
Date    2019/06/12
Time    10:52:28.98046875
***End_of_Header*** 

Channels    17                                                                  
Samples 1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   
Date    2019/06/17  2019/06/17  2019/06/17  2019/06/17  2019/06/17  2019/06/17  2019/06/17  2019/06/17  2019/06/17  2019/06/17  2019/06/17  2019/06/17  2019/06/17  2019/06/17  2019/06/17  2019/06/17  2019/06/17  
Time    00:00:24.056640625  00:00:24.056640625  00:00:24.056640625  00:00:24.056640625  00:00:24.056640625  00:00:24.056640625  00:00:24.056640625  00:00:24.056640625  00:00:24.056640625  00:00:24.056640625  00:00:24.056640625  00:00:24.056640625  00:00:24.056640625  00:00:24.056640625  00:00:24.056640625  00:00:24.056640625  00:00:24.056640625  
X_Dimension Time    Time    Time    Time    Time    Time    Time    Time    Time    Time    Time    Time    Time    Time    Time    Time    Time    
X0  0.0000000000000000E+0   0.0000000000000000E+0   0.0000000000000000E+0   0.0000000000000000E+0   0.0000000000000000E+0   0.0000000000000000E+0   0.0000000000000000E+0   0.0000000000000000E+0   0.0000000000000000E+0   0.0000000000000000E+0   0.0000000000000000E+0   0.0000000000000000E+0   0.0000000000000000E+0   0.0000000000000000E+0   0.0000000000000000E+0   0.0000000000000000E+0   0.0000000000000000E+0   
Delta_X 1.000000    1.000000    1.000000    1.000000    1.000000    1.000000    1.000000    1.000000    1.000000    1.000000    1.000000    1.000000    1.000000    1.000000    1.000000    1.000000    1.000000    
***End_of_Header***                                                                     
X_Value Untitled    Untitled 1  Untitled 2  Untitled 3  Untitled 4  Untitled 5  Untitled 6  Untitled 7  Untitled 8  Untitled 9  Untitled 10 Untitled 11 Untitled 12 Untitled 13 Untitled 14 Untitled 15 Untitled 16 Comment
    167.999595  20.424800   3.683480E-7 7.250010E-8 4.262870E-8 3.519030E-9 12.113764   20.602297   3.465850E-7 6.558680E-13    5.736950E-13    5.163760E-13    4.677860E-13    4.531120E-13    4.404600E-13    4.197010E-13    4.200990E-13
    168.000278  20.209800   3.682400E-7 7.128310E-8 4.211100E-8 3.579760E-9 11.763638   19.912815   3.499790E-7 6.066650E-13    5.517010E-13    5.219980E-13    4.545310E-13    4.693880E-13    4.422010E-13    4.086500E-13    4.332030E-13
    168.000949  19.994800   3.700140E-7 7.218710E-8 4.114490E-8 3.547610E-9 11.597921   20.348094   3.482310E-7 6.436670E-13    5.749850E-13    4.861690E-13    4.723660E-13    4.492960E-13    4.461890E-13    4.627340E-13    4.153260E-13
    168.001620  20.263500   3.668960E-7 7.258560E-8 4.234280E-8 3.562130E-9 11.886933   20.377022   3.460820E-7 6.091490E-13    5.796400E-13    5.023800E-13    4.766230E-13    4.636040E-13    4.376650E-13    4.207870E-13    4.106500E-13
    168.002303  20.102300   3.676490E-7 7.148780E-8 4.086190E-8 3.593330E-9 11.371597   19.894582   3.484330E-7 6.135020E-13    5.799730E-13    4.974020E-13    4.556280E-13    4.468340E-13    4.787080E-13    4.021570E-13    4.381160E-13
    168.002975  20.048500   3.665200E-7 7.319230E-8 4.065750E-8 3.582310E-9 11.349520   20.431593   3.468890E-7 6.248330E-13    5.571080E-13    4.762140E-13    4.785580E-13    4.804170E-13    4.381590E-13    4.416420E-13    4.154980E-13
    168.003657  20.263500   3.654450E-7 7.281390E-8 4.126510E-8 3.568820E-9 11.562673   20.402794   3.447040E-7 6.328950E-13    5.828000E-13    5.180320E-13    4.820620E-13    4.573160E-13    4.551010E-13    4.197980E-13    4.287960E-13
    168.004329  20.156000   3.663590E-7 7.158880E-8 4.066320E-8 3.596200E-9 11.307269   19.906791   3.475940E-7 6.310140E-13    5.826500E-13    5.099370E-13    4.840400E-13    4.593690E-13    4.370300E-13    4.312680E-13    4.105530E-13
    168.005000  20.048500   3.682940E-7 7.245720E-8 4.078780E-8 3.518080E-9 11.593767   20.595666   3.454440E-7 6.227800E-13    5.723940E-13    5.207940E-13    4.895550E-13    4.598850E-13    4.733010E-13    4.329670E-13    4.348700E-13
    168.005683  20.048500   3.675950E-7 7.206990E-8 4.156710E-8 3.572390E-9 11.635656   20.174141   3.465520E-7 6.309170E-13    5.952270E-13    5.362420E-13    5.016380E-13    4.777300E-13    4.726130E-13    4.423840E-13    4.353530E-13
    168.006354  20.156000   3.697450E-7 7.146210E-8 4.046190E-8 3.593570E-9 11.259527   19.886102   3.479970E-7 6.345190E-13    5.939700E-13    5.047770E-13    4.874590E-13    4.812450E-13    4.645720E-13    4.578530E-13    4.002650E-13```
...