剪切数组中值的更有效方法?

我有以下代码:

import numpy as np

MIN = -3
MAX = 3

def bound(array):
    return np.array([(0 if v == 0 else (MIN if v < 0 else 1)) for v in array]),\
           np.array([(0 if v == 0 else (-1 if v < 0 else MAX)) for v in array])

print(bound(np.array(range(MIN, MAX + 1))))

返回:

(array([-3, -3, -3,  0,  1,  1,  1]), array([-1, -1, -1,  0,  3,  3,  3]))

我的实际数组远大于此数组,但是由MIN到MAX(在这种情况下为-3到3)之间的整数组成。

MIN和MAX不应被认为与0对称,但应保持0的值。

是否有更有效/更快的(cpu时间)方法? 时间比较非常赞赏。

谢谢!