例如,我有以下2d数组:
ls = [
[1,2,3,4,'A',5],
[1,2,3,4,'A',5],
[1,2,3,4,'A',5],
[-1,-2,-3,-4,'B',-5],
[-1,-2,-3,-4,'B',-5],
[-1,-2,-3,-4,'B',-5]
]
我想选择ls
的第1、第3、第4列,并分别将每一列保存到一个新列表中。另外,我希望在第5列选择conditional,即检查'A'
还是'B'
,如下所示:
la1 = [int(x[0]) for x in ls if 'A' in x[4]]
la2 = [int(x[2]) for x in ls if 'A' in x[4]]
la3 = [float(x[3]) for x in ls if 'A' in x[4]]
lb1 = [int(x[0]) for x in ls if 'B' in x[4]]
lb2 = [int(x[2]) for x in ls if 'B' in x[4]]
lb3 = [float(x[3]) for x in ls if 'B' in x[4]]
我知道我的实现在大型阵列中效率不高。有没有更好的实施方案? 谢谢大家帮助我!!!你知道吗
您可以尝试使用numpy,它是python的高效数组库:
您可以将您的6个列表理解合并为两个:
首先创建一个三元组列表
(x[0], x[2], float(x[3]))
,然后使用旧的zip(*values)
技巧将其转置并解压到la1, la2, la3
变量中。你知道吗比这更有效的是一个简单的循环:
使用numpy数组 它们比普通的列表快 试着运行下面提供的每一行代码
希望如此有帮助。如果如果你觉得不舒服,试着学习努比。它将来一定会帮助你的。你知道吗
相关问题 更多 >
编程相关推荐