numpy 中 sign 函数的用法

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
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值