У меня есть два массива 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]
Итак, первый элемент в results равен 2, что означает, что первый элемент в search можно найти в третьем элементе data
Однако , у нас есть два элемента со значением 4 в search и один элемент со значением 4 в data , поэтому первые 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значение в массиве результатов, ноль или нет.