Как найти индексы совпадающих элементов в массивах? - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть два вектора, вектор A равен (1298,1), вектор B меняется на a для l oop, но всегда является просто вектором столбца, я пытаюсь использовать numpy .where, чтобы найти A- индексы элементов в B. В настоящее время у меня есть для l oop прочесывание через вектор B поэлементно и использование numpy .isclose, но мне было интересно, если кто-нибудь знает более быструю функцию и / или как сделать это без вложенного для l oop? Это работает, но очень медленно. Циклы for выглядят так:

sphere_indices=[]
for k in range(len(A)):
    for j in range(len(B)):
         if np.isclose(B[j,0],A[k,0]):
              sphere_indices.append(k) ```

1 Ответ

0 голосов
/ 17 февраля 2020

Никогда не было смысла перебирать все 1298 элементов вектора A, чтобы использовать numpy .where и numpy .isclose. Мне просто нужно было использовать элементы в B по одному, поэтому numpy может вещать правильно. Следующий код работает намного быстрее. Любые дальнейшие улучшения всегда приветствуются.

                    for j in range(len(index)):
                        sphere_indices1=np.where(np.isclose(sphere_index[:,0],index[j,0]))
                        sphere_indices.append(sphere_indices1[0])```
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...