Как преобразовать двоичные значения в списке объектов ndarray в десятичные значения? - PullRequest
1 голос
/ 15 марта 2020

Мой список содержит 49 записей. Размер записей варьируется. Например, первая запись состоит из 3032 строк и 27 столбцов. Это соответствует 27 сигналам с 3032 данными каждый. Данные в настоящее время в двоичном формате. Размер столбца также варьируется в пределах записи (27 столбцов имеют разный размер). Например, первый сигнал первой записи имеет следующий формат:

print(signal_reshape_list[0][:,0] #print first entry, first signal with all columns 

Вывод: [список ([1, 1]) список ([1, 1]) список ([1, 1] ) список ([1, 1]) .... список ([1, 1]) список ([1, 1])]

список ([1, 1]) соответствует двоичному числу 0x00000011 и поэтому будет "3" в качестве представления десятичного числа.

print(signal_reshape_list[0][:,0] #print first entry, third signal with all columns 

Вывод: [list ([0, 0, 1, 0]) list ([1, 0, 1, 0]) list ( [0, 0, 1, 1]) .... список ([0, 1, 1, 0]) список ([0, 0, 1, 0]) список ([0, 0, 1, 0]) ]

list ([0, 0, 1, 0]) соответствует двоичному числу 0x00000010 и поэтому будет «2» в качестве представления десятичного числа. list ([1, 0, 1, 0]) соответствует двоичному числу 0x00001010 и, следовательно, будет «10» в качестве представления десятичного числа. И так далее ...

1 Ответ

2 голосов
/ 15 марта 2020

у вас есть список, подобный этому:

Output: [list([0, 0, 1, 0]) list([1, 0, 1, 0]) list([0, 0, 1, 1]) .... list([0, 1, 1, 0]) list([0, 0, 1, 0]) list([0, 0, 1, 0])]

, а желание вывода равно: [2,10,3,..,6,2,2] он может быть ниже по коду, который применяется к выводу:

a= [list([0, 0, 1, 0]), list([1, 0, 1, 0]), list([0, 0, 1, 1])]
out=[]
for l in range(0,len(a)):
    A=a[l]
    out.append(A[3]+A[2]*2+A[1]*4+A[0]*8)

print(out)

И вывод: out: [2, 10, 3]

Обновление:

Каждый элемент списка должен объединяться для получения двоичной строки, такой как 0010, затем он изменится на десятичное значение от int (результат, 2) здесь код:

a= [list([0, 0, 1, 0]), list([1, 0, 1, 0]), list([0, 0, 1, 1,0, 0, 1, 1])]
out=[]
for l in range(len(a)):
    result= ''
    for element in a[l]:
        result += str(element)
    out.append(int(result,2))    

print(out)

Двоичный вывод: ['0010', '1010', '00110011'] десятичный вывод: [2, 10, 51]

...