Конвертировать один столбец в 2d Matrix в Python

У меня есть данные, как показано ниже в одном столбце, и я хочу разбить этот отдельный столбец на n столбцов и назвать строки и столбцы. Как я могу сделать это в Python?

----------- пример данных ----------

5
3
5
0
0
1
0
0
18
23
11
1
2
10
1
0
5
6
1
0
1
1
1
0
158
132
150
17

---- -------- Результат должен выглядеть следующим образом ---------

     column0 column1 column2 column3 column4 column5 column6
row1    5      0      18      2       5       1       158
row2    3      1      23      10      6       1       132
row3    5      0      11      1       1       1       150
row4    0      0      1       0       0       0       17
-2
задан Vinay Kumar G 27 March 2019 в 07:32
поделиться

1 ответ

Один из самых простых способов - использовать numpy и функцию изменения формы

import numpy as np

k = np.array(data)
k.reshape([row,column],order='F')

Как в вашем примере. Вы упомянули, что данные взяты из текстового файла, поэтому для получения данных из текстового файла и изменения их формы

import numpy as np

data = np.genfromtxt("sample-data.txt");
data.reshape([4,7],order='F')

вывод будет

Out[27]: 
array([[  5,   0,  18,   2,   5,   1, 158],
       [  3,   1,  23,  10,   6,   1, 132],
       [  5,   0,  11,   1,   1,   1, 150],
       [  0,   0,   1,   0,   0,   0,  17]])

Я не знаю структуру данных но при условии, что он находится в 1 гигантской колонне, как видно из образца выше. При импорте данных используется open. Происходит следующее.

data = open("sample-data.txt",'r').readlines()

data
Out[64]: 
['5\n',
 '3\n',
 '5\n',
 '0\n',
 '0\n',
 '1\n',
 '0\n',
 '0\n',
 '18\n',
 '23\n',
 '11\n',
 '1\n',
 '2\n',
 '10\n',
 '1\n',
 '0\n',
 '5\n',
 '6\n',
 '1\n',
 '0\n',
 '1\n',
 '1\n',
 '1\n',
 '0\n',
 '158\n',
 '132\n',
 '150\n',
 '17']

Это приводит к массиву строковых значений, поскольку \n означает следующую строку. Предполагая, что это числовые данные, вы можете использовать приведенный выше код для получения чисел.

0
ответ дан Hojo.Timberwolf 27 March 2019 в 07:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: