我有来自the UCI dataset repository的the Thoracic Surgery dataset。
此数据集中的一行如下所示:
DGN3,4.36,3.28,PRZ1,F,F,F,T,F,OC12,T,F,F,T,F,59,T
我有一个脚本将这些行读入子列表:
每个子列表是文件中的一行,包含数据的一些转换(主要是将行中的每个元素转换为一些数值;这部分与问题无关)
因此,每个子列表如下所示:
^{pr2}$现在,我想把这个子列表变成两个子列表,其中:
i
子列表包含除原始列表的第i
子列表的最后一个元素之外的所有内容i
子列表只包含原始列表的第i
子列表的最后一个元素。在例如,上面显示的行(子列表)将分为两个子列表,如下所示:
[3.0, 4.36, 3.28, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 12.0, 1.0, 0.0, 0.0, 1.0, 0.0,59.0]
[1.0]
现在,我知道我可以很容易地做到以下几点:
features, classes = [], []
for subl in L:
features.append(subl[:-1])
classes.append([subl[-1]])
我想知道有没有更好的方法。有没有可能有一个itertools的食谱或者是一些numpy的东西更适合这个呢?在
在处理列表
L
方面,您拥有的代码已经是您所能做的最好的了。您可以将其简化为压缩列表理解,使其成为一行代码,但这不会降低其复杂性:如果处理时间确实是个问题,那么您应该考虑直接使用数据转换进行这些拆分,这样就不会生成最终不会使用的中间格式。在
相关问题 更多 >
编程相关推荐