【问题标题】:Merging list elements with in a list and converting it into string for conversion to decimall将列表元素与列表合并并将其转换为字符串以转换为十进制
【发布时间】:2020-01-28 00:59:20
【问题描述】:
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 代码:)

【问题讨论】:

  • "如果可能,也将 bin 写入 dec 代码 :)" => Stackoverflow 不是代码编写服务。到目前为止,您尝试过什么?
  • 我说如果可能的话..我自己做吧。'bin to dec'

标签: python-3.x numpy binary


【解决方案1】:

很难从您的问题中判断您是否已经解决了问题的“拆分”部分。您无需转换为字符串即可转换为十进制。要回答您问题的第二部分,这里是将二进制列表转换为小数的简单方法:

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]

【讨论】:

  • 我将如何在这个 def 函数中给出一个完整的列表?
  • 您可以将其应用于上面列表的每个元素。我将编辑我的答案,说明如何做到这一点......
  • 太棒了..非常感谢..你改变了整个叙述。我试图将我的列表 [[1, 0, 1, 0, 1], [0, 1, 1, 0, 1],.... 转换为此 [['10101'], ['01101']这样我就可以编写代码'bin('name',2)'来转换我的数据..但这解决了我的问题..这就是为什么我写“如果可能的话,还要将bin写入dec代码:)”
【解决方案2】:

达到目标的方法通常有很多种...
你可以这样做,例如

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    • 2014-09-18
    • 1970-01-01
    • 2011-01-08
    • 2013-12-16
    • 1970-01-01
    相关资源
    最近更新 更多