用Python中相同形状的逻辑数组索引数组

马修

我希望能够做到:

a = [1,2,3]
a[[True, True, False]]
>> array([1,2])

我只是找不到简单的方法...谢谢!

疯狂物理学家

如果a和mask是真正的Python数组,则可以进行简单的列表理解:

arr = [1,2,3]
mask = [True, True, False]
[a for a, m in zip(arr, mask) if m]

如果您可以接受其他导入,则可以使用@ moses-koledoye的使用建议itertools.compress

另一方面,如果您使用numpy,作为array([1,2])建议的最终输出,则可以直接进行索引编制

import numpy as np
arr = np.array([1, 2, 3])
mask = np.array([True, True, False])
arr[mask]

请注意,遮罩必须是实际的np.boolean数组。您不能只使用像这样的Python列表[True, True, False]这是因为np.array.__getitem__检查输入是否正好是另一个数组。如果不是这样,则输入将转换为整数,因此最终将使用[1, 1, 0]而不是掩码进行有效索引您可以在此处获取有关此特定切线问题的更多详细信息:https : //stackoverflow.com/a/39168021/2988730

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章