Конвертировать один столбец в 2d Matrix в Python - PullRequest
0 голосов
/ 27 марта 2019

У меня есть данные, как показано ниже в одном столбце, и я хочу разбить этот единственный столбец на 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

1 Ответ

0 голосов
/ 27 марта 2019

Одним из самых простых способов является использование 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 означает следующую строку. Предполагая, что это числовые данные, вы можете использовать приведенный выше код для получения чисел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...