我有两个NumPy数组,例如:
a = [1,2,3,4,5]
和过滤器数组,例如:
f = [False, True, False, False, True]
len(a) == len(f)
如何才能获得一个新的numpy数组,其中只包含f
中相同索引为True的值?就我而言:[2, 5]
。
根据公认的解决方案(具有不同的值):
>>> a = numpy.array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
>>> b = numpy.array([True, False, True, False, True, False, True, False, True, False])
>>> a[b]
array([1, 3, 5, 7, 9])
答案 0 :(得分:27)
答案 1 :(得分:3)
如果你还不需要numpy数组,这里有一个简单的列表:
import itertools
print itertools.compress(a, f)
对于2.7版之前的python,你必须自己动手(参见手册):
def compress(data, selectors):
return (d for d, s in itertools.izip(data, selectors) if s)