Использовать широковещание:
x = (x <= np.median(x, axis=0))
Результатом будет логический массив нулей и единиц.Кстати, это не сработает, если вы попробуете это с axis=1
, потому что трансляция соответствует осям справа.Вместо этого вам нужно было бы вставить заполнитель для уменьшенной оси, например, так:
x = (x <= np.median(x, axis=1)[..., np.newaxis])
Еще более общий подход был бы
x = (x <= np.median(x, axis=<whatever>, keepdims=True))
Поскольку логические значения технически являются подклассомцелые числа в Python, и numpy соблюдает это соглашение, вы можете получить маску с единицами и двойками вместо нулей и единиц, добавив единицу к результату, однако вы решите ее вычислить:
x = ... + 1