我有数组:
x = np.array([1, 41, 32, 2, -8, 0, -97, 11])
如果x[i]>0,x[i]=1
如果x[i]<0,x[i]=-1
如果x[i]==0,x[i]=0
因此预期输出:
x = np.array([1, 1, 1, 1, -1, 0, -1, 1])
有没有一种方法可以在numpy中使用一行代码而不使用任何循环?我想使用np.where
,但它只需要2个条件,而我有3个条件。谢谢
您可以将np.select
用于多种条件:
np.select([x==0,x>0,x<0],[0,1,-1])
# array([ 1, 1, 1, 1, -1, 0, -1, 1])
或者只在两种情况下,你也可以在适当的地方进行:
x[x>0] = 1
x[x<0] = -1
print(x)
# array([ 1, 1, 1, 1, -1, 0, -1, 1])
虽然这里可能最简单的是np.clip
:
np.clip(x,-1,1)
# array([ 1, 1, 1, 1, -1, 0, -1, 1])
实际上它需要3个参数:
x = np.where(x > 0 , x, 1)