Подтвердить что ты не робот

Вычитайте, если отрицательный, затем верните 0

Я предисловие, это только для удовлетворения моего любопытства, а не для помощи в проекте кодирования. Но я хотел знать, знает ли кто-нибудь о функции (особенно в python, но я соглашусь с действительной математической концепцией) вроде абсолютного значения, что при задании числа возвращает 0, если отрицательный, или возвращает это число, если оно положительное.

Псевдокод:

def myFunc(x):
    if x > 0:
        return x
    else:
        return 0

Опять же, не задавая вопрос из сложности, просто любопытство. Мне нужно было пару раз сейчас, и мне было интересно, действительно ли мне нужно написать свою собственную функцию или если она уже существует. Если для этого нет функции, есть ли способ записать это в одной строке, используя выражение, которое не оценивается дважды.

то есть.

myVar = x-y if x-y>0 else 0

Я был бы в порядке с таким решением, если x-y не оценивался дважды. Поэтому, если у кого-то есть какое-либо решение, я буду признателен.

Спасибо

4b9b3361

Ответ 1

Один из способов...

>>> max(0, x)

Ответ 2

Это должно сделать это:

max(x-y, 0)

Ответ 3

Звучит как вопрос типа анализа. numpy может прийти на помощь!

Если у вас есть данные в массиве:

x = np.arange(-5,11)
print x
[-5 -4 -3 -2 -1  0  1  2  3  4  5  6  7  8  9 10]

# Now do your subtraction and replacement.  
x[(x-y)>0] -= y
x[(x-y)<0]  = 0

Если я правильно понимаю ваш вопрос, вы хотите заменить значения в x, где x-y < 0 с нулями, в противном случае заменить на x-y.

ПРИМЕЧАНИЕ. Решение выше хорошо работает для вычитания целого из массива или работы с двумя массивами равных размеров. Однако решение Даниэла более элегантно при работе над двумя списками одинаковой длины. Все зависит от ваших потребностей (и хотите ли вы отправиться в мир numpy или нет).