вернуть уникальные индексы равных элементов в двух числовых массивах? - PullRequest
0 голосов
/ 07 октября 2018

У меня есть два массива 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значение в массиве результатов, ноль или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...