>>> 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])
答案 0 :(得分:3)
将in1d
与s
一起用作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()