Загрузка данных TXT-файла в массив numpy / получение ошибки - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь загрузить данные из txt-файла в массив numpy.Выдает следующую ошибку:

ValueError: could not convert string to float: '6,50,36'

Файл TXT, который я пытаюсь загрузить в массив, выглядит так (это полный файл):

6,50,36
2,0,1,3,0,1
1,2,1,2,1,2
2,1,2,1,0,1
0,2,0,2,2,3
0,3,3,3,1,4
2,3,2,3,1,3

Я сделал несколькоЯ подумал, что np.loadtxt () - это простое решение для загрузки этого текста в массив, поэтому я попробовал вот что:

import numpy as np
from numpy import loadtxt

f = open('DataNumbers.txt','r')
data_array = float(np.loadtxt(f))  # I thought using 'float' would work for this issue

Интересно,причина, по которой это не работает, состоит в том, что файл содержит два пробела после 36 в первой строке txt-файла?

Как я могу получить эти данные из txt-файла, загруженного в массив, и избавиться отэта ошибка?

Спасибо за помощь!

1 Ответ

0 голосов
/ 06 декабря 2018
In [498]: f = open('stack53641413.txt','r')
In [501]: alist = [[int(x) for x in line.split(',')] for line in f]
In [502]: alist
Out[502]: 
[[6, 50, 36],
 [2, 0, 1, 3, 0, 1],
 [1, 2, 1, 2, 1, 2],
 [2, 1, 2, 1, 0, 1],
 [0, 2, 0, 2, 2, 3],
 [0, 3, 3, 3, 1, 4],
 [2, 3, 2, 3, 1, 3]]
In [504]: np.array(alist[1:])
Out[504]: 
array([[2, 0, 1, 3, 0, 1],
       [1, 2, 1, 2, 1, 2],
       [2, 1, 2, 1, 0, 1],
       [0, 2, 0, 2, 2, 3],
       [0, 3, 3, 3, 1, 4],
       [2, 3, 2, 3, 1, 3]])

То, что вы делаете с alist[0], - это ваше дело.

loadtxt пропуск сложной трудной первой строки:

In [507]: np.loadtxt(f, dtype='int', delimiter=',',skiprows=1)
Out[507]: 
array([[2, 0, 1, 3, 0, 1],
       [1, 2, 1, 2, 1, 2],
       [2, 1, 2, 1, 0, 1],
       [0, 2, 0, 2, 2, 3],
       [0, 3, 3, 3, 1, 4],
       [2, 3, 2, 3, 1, 3]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...