Название и пояснения противоречивы.
Предполагая, что вы ищете первый элемент b
, который больше, а не маленький из b
, который больше, тогда это будет сделано:
a - b[np.argmax(a[:,None]<b,axis=1)]
# array([-7, -6, -5, -3])
Если вам нужен наименьший , который больше, вы можете отсортировать b
заранее, используя b = np.sort(b)
, но тогда использование searchsorted (), предложенное Марком Мейером, будет более эффективным.
обратите внимание, что в b
должен быть хотя бы один элемент, который больше, чем самый большой элемент в a