Координаты элемента в массиве numpy

У меня массив numpy:

[[ 0. 1. 2. 3. 4.] [ 7. 8. 9. 10. 4.] [ 14. 15. 16. 17. 4.] [ 1. 20. 21. 22. 23.] [ 27. 28. 1. 20. 29.]] 

который я хочу быстро найти координаты конкретных значений и избежать циклов python в массиве. Например, номер 4 включен:

 row 0 and col 4 row 1 and col 4 row 2 and col 4 

и функция поиска должна возвращать кортеж:

 ((0,4),(1,4),(2,4)) 

Можно ли это сделать непосредственно через функции nunmpy?

Если a – ваш массив, вы можете использовать:

 ii = np.nonzero(a == 4) 

или

 ii = np.where(a == 4) 

Если вы действительно хотите кортеж, вы можете преобразовать из кортежей массивов в кортеж кортежей, но возвращаемое значение из функций numpy будет полезно для выполнения других операций над вашим массивом.

Преобразование в кортеж для спецификации OP:

 tuple(zip(*ii)) 
 a = numpy.array([[ 0., 1., 2., 3., 4.], [ 7., 8., 9., 10., 4.], [ 14., 15., 16., 17., 4.], [ 1., 20., 21., 22., 23.], [ 27., 28., 1., 20., 29.]]) print numpy.argwhere(a == 4.) 

печать

 [[0 4] [1 4] [2 4]] 

Применяются обычные оговорки для сравнения с плавающей запятой.