Получение индекса строки для 2D-массива numPy, когда известно несколько значений столбца

Предположим, у меня есть 2D-массив numPy, например:

a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

Как мне найти индекс строки, для которой мне известно несколько значений? Например, если известно, что 0-й столбец равен 2, а 1-й столбец равен 5, я хотел бы знать индекс строки, в которой выполняется это условие (строка 1 в данном случае).

В моем приложении первый два столбца - координаты (x, y), а третий столбец - информация об этой координате. Я пытаюсь найти определенные координаты в списке, чтобы изменить значение в третьем столбце.

РЕДАКТИРОВАТЬ: Чтобы уточнить, вот неквадратный пример:

a = [[1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12], [13, 14, 15, 16, 17, 18]]

Предположим, я знаю, что в строке, которую я ищу, 13 в 0-й столбец и 14 в 1-м столбце. Я хочу вернуть индекс этой строки. В этом случае я хотел бы вернуть индекс 2 (2-я строка).

Или, что еще лучше, я хотел бы отредактировать 4-й столбец строки, у которой 13 в 0-м столбце и 14 в 1-м столбце. Вот решение, которое я нашел для описанного мной случая (изменение значения на 999):

a [(a [ :, 0 ] == 13) & (a [: , 1 ] == 14), 3] = 999

дает:

a = [[1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12], [13, 14, 15, 999, 17, 18]]

Прошу прощения, если это было неясно. Может ли кто-нибудь указать в моем исходном сообщении (над правкой), как это можно интерпретировать по-другому, потому что я не могу это увидеть.

Спасибо.

РЕДАКТИРОВАТЬ 2: Исправлена ​​ошибка при первом редактировании (выделено жирным шрифтом)

Теперь я понимаю, как я запутал всех во всем этом. Решение моей проблемы хорошо описано в условии b) решения eat. Спасибо.

8
задан lookitsmarc 7 February 2011 в 03:14
поделиться