Как найти значение i и j элемента матрицы без использования циклов for?

#python #matrix

#python #матрица

Вопрос:

Предположим, у меня был массив NumPy

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

и как найти i и j значение 4 которого равно i =row no = 2 и j = column no = 0

i, j = 2, 0 ?

Ответ №1:

4 имеет строку 1 и столбец 0 в вашем массиве

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

for r, d in enumerate(a):
    if 4 in d:
        pos = (r, d.index(4))

print(pos)
  

Ответ №2:

вы можете использовать numpy.argwhere

 >>> my_array = np.random.randint(0,10,20).reshape(5,4)
>>> print(my_array)
[[7 9 0 0]
 [8 3 2 1]
 [0 4 5 2]
 [7 3 1 6]
 [9 5 0 8]]

  

Из приведенного выше массива, если вы хотите найти все индексы, где значение 2 , используйте

 >>> print(np.argwhere(my_array == 2))
[[1 2]
 [2 3]]
  

если вам нужен только первый индекс, используйте

 >>> print(tuple(np.argwhere(my_array == 2)[0]))
(1, 2)
  

примечание: пожалуйста, имейте в виду, что, если искомый элемент отсутствует в вашем массиве, вы получите IndexError второй случай