27

はじめに、これはコーディングプロジェクトで助けを必要とするのではなく、単に私の好奇心を満たすためです。しかし、絶対値のような関数(特にPythonでは、有効な数学の概念を受け入れます)を誰かが知っているかどうかを知りたいと思っていました。負の場合は0を返し、正の場合はその数値を返します。

擬似コード:

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

繰り返しますが、複雑さから質問をするのではなく、好奇心だけです。私は今それを数回必要としていて、本当に自分の関数を書く必要があるのか​​、それともすでに存在しているのか疑問に思っていました。これを行う関数がない場合、式が2回評価されないことを使用して、これを1行で記述する方法はありますか。

すなわち

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

xyが2回評価されなかった場合、私はそのような解決策で大丈夫でしょう。ですから、誰かが解決策を持っているなら、私はそれをいただければ幸いです。

ありがとう

4

4 に答える 4

69

一方通行...

>>> max(0, x)
于 2012-10-04T13:17:50.787 に答える
17

これはそれを行う必要があります:

max(x-y, 0)
于 2012-10-04T13:17:41.883 に答える
2

分析タイプの質問のように聞こえます。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

私があなたの質問を正しく理解しているなら、あなたはxy <0であるxの値をゼロに置き換えたいと思うでしょう、さもなければxyに置き換えてください。

注:上記の解決策は、配列から整数を減算する場合、または等しい次元の2つの配列を操作する場合に適しています。ただし、同じ長さの2つのリストで作業する場合、ダニエルのソリューションはよりエレガントです。それはすべてあなたのニーズ(そしてあなたがnumpyの世界に挑戦したいかどうか)に依存します。

于 2012-10-04T13:33:28.663 に答える