如何将 ndarray 对象列表中的二进制值转换为十进制值?
How to convert binary values within a list of ndarray objects to decimal values?
我的列表包含 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])]
list([1, 1]) 对应于二进制数 0x00000011,因此将是“3”作为十进制数表示法。
print(signal_reshape_list[0][:,0] #print first entry, third signal with all columns
输出:[列表([0,0,1,0])列表([1,0,1,0])列表([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”表示为十进制数。等等...
你有一个这样的列表:
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(result, 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]
我的列表包含 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])]
list([1, 1]) 对应于二进制数 0x00000011,因此将是“3”作为十进制数表示法。
print(signal_reshape_list[0][:,0] #print first entry, third signal with all columns
输出:[列表([0,0,1,0])列表([1,0,1,0])列表([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”表示为十进制数。等等...
你有一个这样的列表:
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(result, 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]