1

-0.5と0.5の間に値がないように、numpy配列の値を制約しようとしています。したがって、次のような値を持つ形状(6,2)の配列がある場合:

array([[  0.49873803,  -1.66316398],
       [ -0.36091764,   2.0635736 ],
       [ -1.09922111,  -2.49380792],
       [  0.92724579,  -5.19540319],
       [  1.49726584,  -0.22718924],
       [ 60.        ,  60.        ]])

numpyを取得して、-0.5-> 0.0から-0.5に、0.5-> 0.0から0.5に値を変更して、配列の例を次のようにするにはどうすればよいですか。

array([[  0.5,  -1.66316398],
       [ -0.5,   2.0635736 ],
       [ -1.09922111,  -2.49380792],
       [  0.92724579,  -5.19540319],
       [  1.49726584,  -0.5],
       [ 60.        ,  60.        ]])

np.clipを使ってみましたが、うまくいかなかったか、理解できなかったので、ここにいます!

4

2 に答える 2

6

あなたaだけの実行のために:

a[( 0.  <= a) & (a < 0.5)] =  0.5
a[(-0.5 <  a) & (a < 0. )] = -0.5

または単に:

np.putmask(a, np.abs(a) < .5, np.sign(a) * .5)

最初のものは、ニーズに応じて処理するように調整でき0.ます。2番目のものはそれを任せます0.

于 2012-06-08T13:14:24.803 に答える
-1

配列を反復処理してみましたか?

i = 0
j = 0

while ( i < len(A)):
    while (j < len(i)):
        if  -0.5 <= A[i][j] <= 0:
            A[i][j] = -0.5
        if  0 <= A[i][j] <= 0.5:
            A[i][j] = 0.5
        j = j + 1

    i =  i +1

またはそのようなもの...構文が正しくない場合は許してください...

于 2012-06-08T13:19:00.890 に答える