我希望能够做到:
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] 删除。
我来说两句