如何在不使用 numpy 的情况下使用布尔索引数组来过滤列表?
例如:
>>> l = ['a','b','c']
>>> b = [True,False,False]
>>> l[b]
结果应该是:
['a']
我知道 numpy 支持它,但想知道如何在 Python 中解决。
>>> import numpy as np
>>> l = np.array(['a','b','c'])
>>> b = np.array([True,False,False])
>>> l[b]
array(['a'],
dtype='|S1')
Python 不支持布尔索引,但itertools.compress https://docs.python.org/3.5/library/itertools.html#itertools.compress函数正是你想要的。它返回一个迭代器,意味着您需要使用list
构造函数返回一个列表。
>>> from itertools import compress
>>> l = ['a', 'b', 'c']
>>> b = [True, False, False]
>>> list(compress(l, b))
['a']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)