Мне нужно найти индекс минимума на строку в 2-мерном массиве, который в то же время защищает дополнительное ограничение на значения столбца. Имея два массива a
и b
a = np.array([[1,0,1],[0,0,1],[0,0,0],[1,1,1]])
b = np.array([[1,-1,2],[4,-1,1],[1,-1,2],[1,2,-1]])
, цель состоит в том, чтобы найти признаки, для которых установлено, что a == 1
, b
положительно, а b
- минимальное значение строки , Выполнить первые два условия легко
idx = np.where(np.logical_and(a == 1, b > 0))
, что дает индексы:
(array([0, 0, 1, 3, 3]), array([0, 2, 2, 0, 1]))
Теперь мне нужно отфильтровать дублирующиеся записи строк (придерживаться только минимального значения), но я не могу думать элегантного способа достичь этого. В приведенном выше примере результат должен быть
(array([0,1,3]), array([0,2,0]))
edit :
Он также должен работать для a
, содержащего другие значения, отличные от 0
и 1
.