#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. ]
.