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

标签 python arrays python-2.7

我正在运行 Python 2.7。

我有一个名为“altitude”的数组,包含以下几点

[0,1,2,3,4,5,6,7,8,9]

我还有一个名为“arming_pin”的数组

[0,0,0,0,0,0,1,1,1,1]

在我的程序中,当 arming_pin 大于零时,我想使用“altitude”数组数据点,并在 “arming_pin” = 为 0 时忽略之前的点。我想调用这个新数组 "altitude_new"。 “altitude_new”数组看起来像:

[6,7,8,9]

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

最佳答案

您可以使用 zip在列表推导中过滤数组的函数:

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

关于python - 当第二个数组 > 0 时创建新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31388247/

相关文章:

python - 从一行中获取特定的字符串

python - 如何从 github 安装存储库?

javascript - 如何使用 Parse.com/Express JS 检索对象信息并将其添加到数组中

java - 使用用户定义数组时出现空指针异常

c - 调用 bsearch 时获取 "error: invalid initializer"

linux - 如何在 python 中轮询 GPIO 中断?

python - 在 Pandas 中查找行并更新特定值

python - 如何在 Python 中迭代两个或多个列表项的元组?

python - 删除 Pandas 列的最佳方法是什么

python - 为什么 api.depends 不能在非编辑模式下使用 message_follower_ids 字段?如何修复它?