Итерация по двум 2D numpy массивам с индексом - PullRequest
3 голосов
/ 29 апреля 2020

У меня есть два 2D numpy массива одинаковой формы. Есть ли способ выполнить итерацию по ним одновременно с получением, например, пары элементов из обеих таблиц и их индекса?

Например, у меня есть два массива

before = np.array(
    [[0, 0, 0, 0, 0, 0, 0, 0],
     [0, 0, 0, 0, 0, 0, 0, 0]],
    dtype=int
)
after = np.array(
    [[0, 0, 1, 0, 0, 0, 0, 0],
     [0, 0, 0, 0, 1, 0, 0, 1]],
    dtype=int
)

Я хочу получить список индексов каждой zero из таблицы before, которая была преобразована в one в таблице after - в этом случае это будет [(0, 2), (1, 4), (1, 7)].

numpy.ndenumerate очень близок к тому, чего я хотел бы достичь, но он может перебирать только один массив одновременно.

1 Ответ

4 голосов
/ 29 апреля 2020

Вы можете передать оба условия на np.logical_and и затем использовать np.argwhere, чтобы найти индексы, которые удовлетворяют обоим условиям:

idx = np.argwhere(np.logical_and(before==0, after==1))

output:

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