Во-первых, вы можете использовать numpy.apply_along_axis
, чтобы применить custom_min
к каждой строке.
Я бы также переписал custom_min
, чтобы получить больше numpythoni c: return min(l_[l_ > 0])
.
Теперь, когда у вас есть этот пользовательский минимум в векторе, вы снова можете использовать логическое индексирование:
row_mask = result > 0.3
и filtered_array = a[row_mask, :]
РЕДАКТИРОВАТЬ: немного подумать о том, как сделать все используйте только numpy векторизованные функции. Сначала мы можем использовать numpy.where
для замены всего, что меньше 0, на бесконечность. Это учитывает минимум:
row_wise_custom_mins = np.min(np.where(a > 0, a, np.inf), axis=1)
"где" выбирает значения из a
, если условие истинно, и np.inf
, если условие ложно. Затем мы выбираем минимум (по оси 1) и все.