ошибка при разделении файла и преобразовании в массив numpy

#python #numpy #split #numpy-ndarray

#python #numpy #разделение #numpy-ndarray

Вопрос:

Уважаемые эксперты, я хочу разделить большой столбец файла по заданному символу ‘>’ и преобразовать его в массив numpy, выполняя это с test1.txt файл в порядке, но при применении того же скрипта к test2.txt в файле возникает проблема типа-ошибка: аргумент float() должен быть строкой или числом, а не «списком». но структура данных в test1.txt и test2.txt одинаковы в обоих файлах файлы данных разделены одним и тем же символом >.Кто-нибудь может сказать мне, что я делаю не так…я не могу recognize..my скрипт для test1.txt приведено ниже, которое работает нормально. но пока я помещаю test2.txt вместо test1.txt существует ошибка, как упоминалось выше.Мои файлы данных(test1.txt и test2.txt ) добавляются здесь https://i.fluffy.cc/4nZ0GdDPjw9v4PdQ5P0C6NhqqGrdd3Wx.html

 import numpy as np
with open('test1.txt') as f:
    a = f.read()
data = [l.split("n")[1:-1] for l in a.split('>')[1:]] # 1:-1 removes empty strings
data = np.array(data, dtype=float)
print(data)
  

Комментарии:

1. Когда вы применяете data = np.array(data) для обоих текстовых файлов, а затем получаете результаты data.dtype для обоих, это показывает <U10 для test1.txt и object для test2.txt . Итак, у них разные типы данных.

2. не могли бы вы подсказать, как решить эту проблему…

3. опубликуйте ожидаемый результат

4. @deadshot результаты с плавающей запятой, которые я ожидаю, поскольку мы получаем результаты при применении test1.txt

5. ваш код не работает для обоих файлов

Ответ №1:

Если вы хотите сделать это по-своему, обратитесь к приведенному ниже коду:

 with open('test2.txt') as f:
    a = f.read()
data = [l.split("n")[1:-1] for l in a.split('>')[1:]] # 1:-1 removes empty strings
data_0 = np.array(data[0], dtype='float')
data_1 = np.array(data[1], dtype='float')
data = np.concatenate([data_0,data_1])
print(data)
  

Комментарии:

1. ошибка ValueError: не удалось преобразовать строку в float:

2. Я снова протестировал его и получил этот результат [ 0.019107 0.011177 0.0017088 ... -0.018501 -0.016575 0. ] .