Проблема с чтением текстового файла в массив Numpy с помощью Pandas Reader
У меня есть массивный текстовый файл, фиктивная версия выглядит так после пропуска заголовков:
1444455 7 8 12 52 45 68 70
1356799 3 3 45 34 23 22 11
Я хотел бы прочитать это в массиве NumPy и np.loadtxt работает очень медленно. Название файла - data.txt. Прямо сейчас я использую:
u=pd.read_csv('data.txt',dtype=np.float16,header=3).values
Я играл с параметрами безрезультатно. Если я опущу dtype, я получу одну длинную строку чисел для каждой строки в моем массиве. Когда я вставляю dtype, я получаю ошибку: недопустимый литерал для float(). Я полагаю, что есть также некоторая путаница с двумя типами разделителей, которые у меня есть в текстовом файле (табуляции и пробелы). Как я могу получить это в массиве формы (2,8).
Может ли кто-нибудь из вас помочь профессионалам? Спасибо
1 ответ
Кажется тебе нужно delim_whitespace=True
в read_csv
если разделитель является пробелом и header=None
:
Затем приведите к float
:
u=pd.read_csv('data.txt', delim_whitespace=True, header=None).astype(float).values
print (u)
[[ 1.44445500e+06 7.00000000e+00 8.00000000e+00 1.20000000e+01
5.20000000e+01 4.50000000e+01 6.80000000e+01 7.00000000e+01]
[ 1.35679900e+06 3.00000000e+00 3.00000000e+00 4.50000000e+01
3.40000000e+01 2.30000000e+01 2.20000000e+01 1.10000000e+01]]
но есть numpy.float64
:
u=pd.read_csv('data.txt', delim_whitespace=True, header=None).astype(float)
print (type(u.loc[0,0]))
<class 'numpy.float64'>
Если использовать dtype=np.float16
получить inf
:
u=pd.read_csv('data.txt', dtype=np.float16, delim_whitespace=True, header=None).values
print (u)
[[ inf 7. 8. 12. 52. 45. 68. 70.]
[ inf 3. 3. 45. 34. 23. 22. 11.]]