我有以下变量:
将numpy导入为np
gens = np.array([2, 1, 2, 1, 0, 1, 2, 1, 2])
p = [0,1]
我想返回与p
的每个元素相匹配的gens
条目。
所以理想情况下,我希望它返回:
result = [[4],[2,3,5,7],[0,2,6,8]]
#[[where matched 0], [where matched 1], [the rest]]
--
到目前为止,我的尝试只对一个变量有效:
indx = gens.argsort()
res = np.searchsorted(gens[indx], [0])
gens[res] #gives 4, which is the position of 0
但我试着用
indx = gens.argsort()
res = np.searchsorted(gens[indx], [1])
gens[res] #gives 1, which is the position of the first 1.
所以:
如何搜索具有多个occurrences
的多个条目
发布于 2018-10-16 03:06:11
您可以使用np.where
>>> np.where(gens == p[0])[0]
array([4])
>>> np.where(gens == p[1])[0]
array([1, 3, 5, 7])
>>> np.where((gens != p[0]) & (gens != p[1]))[0]
array([0, 2, 6, 8])
>>> np.nonzero(np.in1d(gens, p[0]))[0]
>>> np.nonzero(np.in1d(gens, p[1]))[0]
>>> np.nonzero(~np.in1d(gens, p))[0]
https://stackoverflow.com/questions/52822772
复制相似问题