Преобразование вывода списка в Python
У меня есть функция, которая работает следующим образом, чтобы прочитать файл.csv и сохранить его в массиве.
def read_csv(self, filename, delimiter = ',', quotechar = '"'):
reader = csv.reader(open(filename, 'rb'), delimiter = delimiter, quotechar = quotechar)
# read first line and extract its data
self.column_headings = np.array(next(reader))
# read subsequent lines
rows = []
for row in reader:
rows.append(row)
self.data = np.array(rows)
self.m, self.n = self.data.shape
Я просто пытаюсь прочитать файл.tsv, чтобы он вернулся в той же форме. У меня есть это до сих пор:
traindata = np.array(p.read_table('train.tsv'))[:,2]
Тем не менее, когда я пытаюсь позвонить:
m, n = traindata.data.shape
# Display
print m, n, traindata.column_headings
Я получаю ошибку:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-14-1f877ccb37b5> in <module>()
----> 1 m, n = traindata.data.shape
AttributeError: 'buffer' object has no attribute 'shape'
Что вызывает эту проблему и как я могу это исправить?
1 ответ
Решение
Вы явно создаете list
из traindata
:
traindata = list(np.array(p.read_table('train.tsv'))[:,2])
# ^ here
Если вы хотите использовать его как numpy.array
, удалить list()
вызов:
traindata = np.array(p.read_table('train.tsv'))[:,2]
Во-вторых, вы хотите shape
из array
не его data
:
m, n = traindata.shape