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

Уважаемые эксперты, я хочу разбить большой столбец файла по данному символу «› »и превратить его в массив numpy, при этом с файлом test1.txt все в порядке, но при применении того же сценария к файлу test2.txt возникает проблема типа Type -error: аргумент float () должен быть строкой или числом, а не списком. но структура данных в test1.txt и test2.txt одинакова + в обоих файлах файлы данных разделены одним и тем же ›символом. Кто-нибудь может сказать мне, что я делаю не так ... я не могу распознать ... мой сценарий для Ниже приведен 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)

person geo    schedule 05.09.2020    source источник
comment
Когда вы применяете data = np.array(data) для обоих текстовых файлов, а затем получаете результаты data.dtype для обоих, он показывает <U10 для test1.txt и object для test2.txt. Итак, у них разный тип данных.   -  person Pooria_T    schedule 05.09.2020
comment
не могли бы вы подсказать, как решить эту проблему ...   -  person geo    schedule 05.09.2020
comment
опубликуйте ожидаемый результат   -  person deadshot    schedule 05.09.2020
comment
Я ожидаю результатов @deadshot с плавающей запятой, поскольку мы получаем результаты, когда применяем test1.txt   -  person geo    schedule 05.09.2020
comment
ваш код не работает для обоих файлов   -  person deadshot    schedule 05.09.2020
comment
да @deadshot, мне нужно решить эту проблему ... вы красиво указали ... есть ли какое-либо решение для того же   -  person geo    schedule 05.09.2020
comment
это ваш выходной 1d массив?   -  person deadshot    schedule 05.09.2020
comment
@deadshot да два 1d массива разделены символом ›в обоих файлах (test1.txt и test2.txt)   -  person geo    schedule 05.09.2020
comment
@geo Вы можете вставить data = np.array(data, dtype="O") для test1.txt, чтобы сделать его dtype как объект.   -  person Pooria_T    schedule 05.09.2020
comment
@Pooria_T Я получаю правильные результаты для test1.txt, нет сомнений .... мне нужно решить то же самое для test2.txt   -  person geo    schedule 05.09.2020
comment
@Pooria_T мне нужны результаты значений с плавающей запятой, как мой код для test1.txt ... не строки. Есть ли какие-либо решения для того же   -  person geo    schedule 05.09.2020


Ответы (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)
person Pooria_T    schedule 05.09.2020
comment
ошибка ValueError: не удалось преобразовать строку в число с плавающей запятой: - person geo; 05.09.2020
comment
Я проверил это снова и получил такой результат [ 0.019107 0.011177 0.0017088 ... -0.018501 -0.016575 0. ]. - person Pooria_T; 05.09.2020