返回两个numpy数组中相等元素的唯一索引?

时间:2018-10-07 11:37:56

标签: python arrays numpy

我有两个numpy数组;一个大于另一个。我希望函数返回与较大元素有关的公共元素的索引,并且此返回的索引列表应具有唯一值,例如:

search = np.array([1,3,4,5,8,10,7,3,4,5,8,7])

data = np.array([7,10,1,12,7,1,5,18,4,3,10,5,8,4])

我的函数输出应如下所示:

result = [2,9,none,6,12,10,0,9,13,11,none,4]

因此,结果中的第一个元素是2,这意味着搜索中的第一个元素可以在数据的第三个元素中找到>

但是,我们在 search 中有两个值为4的元素,在 data 中有一个值为4的元素,因此前4个值(搜索的第9个元素)将被映射到13,并且其他4个值应分配给另一个索引(如果可用);如果没有其他值,则应为其索引分配零或不分配

我在上一个问题中找到了此代码,该代码将完成此工作,但是所得到的索引数组具有重复项:

x = np.array([3, 5, 7, 1, 9, 8, 6])
y = np.array([2, 1, 5, 10, 100, 6,6])

index = np.argsort(x)
sorted_x = x[index]
sorted_index = np.searchsorted(sorted_x, y)

yindex = np.take(index, sorted_index, mode="clip")
mask = x[yindex] != y

result = np.ma.array(yindex, mask=mask)
print (result)

# result =[[-- 3 1 -- -- 6 6]]

就我而言,不应重复,而不是结果数组中的第二个6值,即零或无。

0 个答案:

没有答案