Преобразование длинного списка последовательностей 0 и 1 в массив numpy или pandas dataframe - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть очень длинный список последовательностей (предположительно длиной 16 каждая), состоящий из 0 и 1. Например,

s = ['0100100000010111', '1100100010010101', '1100100000010000', '0111100011110111', '1111100011010111']

Теперь я хочу обработать каждый бит как функцию, поэтому мне нужно преобразовать егов массив NumPy или Pandas данных.Для этого мне нужно разделить запятыми все биты, присутствующие в последовательностях, что невозможно для больших наборов данных.

Итак, я попытался сгенерировать все позиции в строке:

slices = []
for j in range(len(s[0])):
    slices.append((j,j+1)) 

print(slices)
[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8), (8, 9), (9, 10), (10, 11), (11, 12), (12, 13), (13, 14), (14, 15), (15, 16)]


new = []
for i in range(len(s)):
    seq = s[i]
    for j in range(len(s[i])):
    ## I have tried both of these LOC but couldn't figure out 
    ## how it could be done        
    new.append([s[slice(*slc)] for slc in slices])
    new.append(s[j:j+1])
print(new)

Ожидаемый o / p:

new = [[0,1,0,0,1,0,0,0,0,0,0,1,0,1,1,1], [1,1,0,0,1,0,0,0,1,0,0,1,0,1,0,1], [1,1,0,0,1,0,0,0,0,0,0,1,0,0,0,0], [0,1,1,1,1,0,0,0,1,1,1,1,0,1,1,1], [1,1,1,1,1,0,0,0,1,1,0,1,0,1,1,1]]

Заранее спасибо !!

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

В одной строке, без for циклов:

np.array(s).view('<U1').astype(int).reshape(len(s), -1)

array([[0, 1, 0, ..., 1, 1, 1],
       [1, 1, 0, ..., 1, 0, 1],
       [1, 1, 0, ..., 0, 0, 0],
       [0, 1, 1, ..., 1, 1, 1],
       [1, 1, 1, ..., 1, 1, 1]])

Все же немного медленнее, чем понимание списка, хотя

0 голосов
/ 11 сентября 2018

Использование конструктора np.array и понимание списка:

np.array([list(row) for row in s], dtype=int)

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