为了账号安全,请及时绑定邮箱和手机立即绑定

将一长串 0 和 1 的序列转换为 numpy 数组或 Pandas 数据帧

将一长串 0 和 1 的序列转换为 numpy 数组或 Pandas 数据帧

不负相思意 2021-06-11 14:09:25
我有一个很长的序列列表(假设每个长度为 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 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

使用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]])


查看完整回答
反对 回复 2021-06-15
?
jeck猫

TA贡献1909条经验 获得超7个赞

在一行中,没有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]])

虽然仍然比列表理解慢一点


查看完整回答
反对 回复 2021-06-15
  • 2 回答
  • 0 关注
  • 229 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信