numpy:如果数组元素在给定集合中,则返回boolean,返回true

时间:2014-04-07 09:23:25

标签: python numpy

>>> s = {0, 4, 27}
>>> a = numpy.arange(10)
>>> t = some_func(a)
>>> t
[1, 0, 0, 0, 1, 0, 0, 0, 0, 0]

使这项工作成为必要的规范some_func是什么?

我尝试了什么

我已经尝试过矢量化一个lambda函数,它可以正常工作......它只是感觉不是正确的方法。

>>> f = lambda i: i in s
>>> vf = numpy.vectorize(f)
>>> t = numpy.fromfunction(vf, a.shape)
>>> t.astype(int)
array([1, 0, 0, 0, 1, 0, 0, 0, 0, 0])

2 个答案:

答案 0 :(得分:3)

in1ds一起用作NumPy数组

>>> import numpy as np
>>> s = np.array([0, 4, 27])
>>> a = np.arange(10)
>>> t = np.in1d(a, s)
>>> t
array([ True, False, False, False,  True, False, False, False, False, False], dtype=bool)
>>> 

答案 1 :(得分:0)

这会更快:

t = np.zeros(10, int)
sa = np.array(list(s))
t[sa[sa<10]] = 1

除非a不是np.arange()