Координаты элемента в массиве 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?

2 Solutions collect form web for “Координаты элемента в массиве numpy”

Если 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]] 

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

  • Остановка функции третьей стороны
  • Настроить регистратор модулей на флеш-регистратор приложений
  • Потоковые данные с Python и Flask
  • PyOpenGL TypeError: объект «NoneType» не может быть вызван
  • Использование метода populate_obj () WTForms с фреймворком micro framework
  • Создание вложенных вызовов для «выполнения» с помощью библиотеки Fabric Python
  • Где я могу поместить код очистки в приложение Flask?
  • Что делает цикл for внутри списка в Python?
  • Python - лучший язык программирования в мире.