2024-06-08 22:44:14 发布
网友
我正在运行python2.7
我有一个叫做“高度”的数组,有以下几点
[0,1,2,3,4,5,6,7,8,9]
我还有一个数组叫做“武装针”
[0,0,0,0,0,0,1,1,1,1]
在我的程序中,当待命引脚大于零时,我想使用“高度”数组数据点,当"arming_pin"为=0时忽略以前的点。我想将这个新数组称为"altitude_new"。“新高度”数组如下所示:
"arming_pin"
"altitude_new"
[6,7,8,9]
如何在python中创建这个新数组?使用某种条件语句
altitude_new=[] for i in range(len(arming_pin)): if arming_pin[i] == 1: altitude_new.append(altitude[i])
单行列表理解:
altitude_new = [altitude[i] for i in range(len(arming_pin)) if arming_pin[i]]
night shade的评论现在更加简洁了[j代表i,j在enumerate(高度)中如果装备了\u pin[i]]
可以在列表理解中使用^{}函数来筛选数组:
>>> f=[0,1,2,3,4,5,6,7,8,9] >>> sec=[0,0,0,0,0,0,1,1,1,1] >>> >>> [i for i,j in zip(f,sec) if j] [6, 7, 8, 9]
您还可以使用itertools.compress,这在处理较大的列表时效率更高:
itertools.compress
>>> from itertools import compress >>> list(compress(f,sec)) [6, 7, 8, 9]
或者使用numpy.compress:
numpy.compress
>>> import numpy as np >>> np.compress(sec,f) array([6, 7, 8, 9])
您也可以这样使用compress method from itertools模块:
>>> import itertools as it >>> l1 = [0,1,2,3,4,5,6,7,8,9] >>> l2 = [0,0,0,0,0,0,1,1,1,1] >>> list(it.compress(l1,l2)) [6, 7, 8, 9]
单行列表理解:
night shade的评论现在更加简洁了[j代表i,j在enumerate(高度)中如果装备了\u pin[i]]
可以在列表理解中使用^{} 函数来筛选数组:
您还可以使用
itertools.compress
,这在处理较大的列表时效率更高:或者使用
numpy.compress
:您也可以这样使用compress method from itertools模块:
相关问题 更多 >
编程相关推荐