当第二个数组>0时创建新数组

2024-06-08 22:44:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在运行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"。“新高度”数组如下所示:

[6,7,8,9]

如何在python中创建这个新数组?使用某种条件语句


Tags: 数据程序new高度pin数组语句条件
3条回答
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,这在处理较大的列表时效率更高:

>>> from itertools import compress
>>> list(compress(f,sec))
[6, 7, 8, 9]

或者使用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]

相关问题 更多 >