Объединение элементов списка с в списке и преобразование его в строку для преобразования в decimall - PullRequest
0 голосов
/ 27 сентября 2019
import numpy as np
txor=np.array([1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1,
       0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0,
       1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1,
       1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0,
       0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1])
def chunker_list(seq, size):
    return (seq[i::size] for i in range(size))
spl2=[]
spl=list(chunker_list(txor, 20))
#spl2=int('1010101',2)
#print(spl)
for i in spl:
    spl1=((i))
    spl2.append(spl1)
#print(spl2)
join=[]
for r in spl2:
    test_list=str(r)
# printing result  
    test_list = [''.join(test_list[ : ])] 
    join.append(test_list)
res=str((join))

В этом я сгенерировал данные в spl2 , что похоже на

[[1, 0, 1, 0, 1], [0, 1, 1, 0, 1], [0, 0, 0, 1, 0], [1, 1, 0, 0, 0], [1, 0, 1, 1, 1], [0, 0, 0, 1, 1], [1, 0, 1, 1, 0], [1, 1, 0, 1, 0], [0, 1, 1, 0, 0], [1, 1, 0, 0, 1], [0, 0, 1, 0, 1], [0, 1, 0, 0, 0], [0, 1, 1, 1, 1], [0, 1, 1, 0, 0], [1, 1, 1, 1, 1], [1, 0, 0, 1, 0], [0, 1, 0, 1, 1], [0, 1, 1, 0, 1],[0, 1, 0, 0, 1], [0, 1, 0, 0, 1]]

хотят получить эти данные spl2 в этой форме

[['10101'], ['01101'], ['00010'], ........., чтобы я мог преобразовать этот набор данных выше в десятичную.Также, если возможно, напишите bin в dec-код:)

Ответы [ 2 ]

2 голосов
/ 27 сентября 2019

Трудно сказать по вашему вопросу, решили ли вы уже "расщепление" части вашей проблемы.Вам не нужно преобразовывать в строку, чтобы преобразовать в десятичную.Чтобы ответить на вторую часть вашего вопроса, вот простой способ преобразовать ваш список двоичных файлов в десятичные:

def bin_to_dec(bins):
    return sum([2 ** p for p, v in enumerate(bins[::-1]) if v])

print(bin_to_dec([0, 0, 0, 1]))
print(bin_to_dec([1, 0, 1]))
print(bin_to_dec([1, 1, 0, 0, 0, 1]))

результат:

1
5
49

Чтобы применить это к вашему спискусписки выше, просто сделайте что-то вроде этого:

my_list = [[0, 0, 0, 1], [1, 0, 1], [1, 1, 0, 0, 0, 1]]
print([bin_to_dec(bins) for bins in my_list])

результат:

[1, 5, 49]
0 голосов
/ 27 сентября 2019

Существует так много способов достижения цели ...
Вы можете сделать, например,

bin = [''.join([str(i) for i in sub]) for sub in spl2]
dec = [int(b, 2) for b in bin]

или с numpy

import numpy as np

dec = map(lambda x: np.sum(np.logspace(4, 0, 5, base=2)*x), spl2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...