1

我正在尝试约束 numpy 数组的值,以便没有值介于 -0.5 和 0.5 之间。因此,如果我有一个形状为 (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.根据您的需要进行调整以处理。第二个留给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 回答