sigh函数返回的是一个由 1 和 -1 组成的数组,表示原始值的符号。例如下:
a = Series([1, 2, 3, 4, 5, 6, -1 , -2, -3, -4])
np.sign(a)
Out:
0 1
1 1
2 1
3 1
4 1
5 1
6 -1
7 -1
8 -1
9 -1
dtype: int64
相当于是给原始数据的绝对值作单位化,而且保留了正负号。
经常和numpy中的绝对值函数连用,用于将一组数据限制在一定的区间。例如下:
先创建一组服从标准正态分布的随机数(其中包含4列):
data = DataFrame(randn(1000, 4))
data.describe()
Out:
0 1 2 3
count 1000.000000 1000.000000 1000.000000 1000.000000
mean -0.067684 0.067924 0.025598 -0.002298
std 0.998035 0.992106 1.006835 0.996794
min -3.428254 -3.548824 -3.184377 -3.745356
25% -0.774890 -0.591841 -0.641675 -0.644144
50% -0.116401 0.101143 0.002073 -0.013611
75% 0.616366 0.780282 0.680391 0.654328
max 3.366626 2.653656 3.260383 3.927528
然后将那些绝对值大于3的数据修改成等于3,就可以实现将数据控制在(-3, 3)的区间内了:
data[np.abs(data) > 3] = np.sign(data) * 3
data.describe()
Out:
0 1 2 3
count 1000.000000 1000.000000 1000.000000 1000.000000
mean -0.067623 0.068473 0.025153 -0.002081
std 0.995485 0.990253 1.003977 0.989736
min -3.000000 -3.000000 -3.000000 -3.000000
25% -0.774890 -0.591841 -0.641675 -0.644144
50% -0.116401 0.101143 0.002073 -0.013611
75% 0.616366 0.780282 0.680391 0.654328
max 3.000000 2.653656 3.000000 3.000000