at.*_*at. 4 python list python-3.x masked-array
在 vanilla Python 3 中是否有一种惯用的方法来屏蔽数组的元素?例如:
a = [True, False, True, False]
b = [2, 3, 5, 7]
b[a]
Run Code Online (Sandbox Code Playgroud)
我希望b[a]能返回[2, 5],但出现错误:
类型错误:列表索引必须是整数或切片,而不是列表
在 R 中,这按我的预期工作(使用c()而不是[]创建列表)。我知道 NumPyMaskedArray可以做到这一点,我正在寻找一种惯用的方法来用普通的 Python 来做到这一点。当然,我可以使用循环并迭代掩码列表和元素列表,但我希望有一种更有效的方法来使用更高级别的抽象来掩码元素。
您可以使用itertools.compress:
>>> from itertools import compress
>>> a = [True, False, True, False]
>>> b = [2, 3, 5, 7]
>>> list(compress(b, a))
[2, 5]
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅“itertools.compress()”文档
| 归档时间: |
|
| 查看次数: |
2090 次 |
| 最近记录: |