numpy模块下的np.clip()的用法

在求对数损失函数时会用到log函数,对数函数要求对数必须大于零,而从计算中得到的数据可能存在等于0或等于1的情况,这是就会出现inf的数据,影响后续的处理

例子:

x = np.array([0, 0, 0.2, 0.4, 0.7, 1, 1])
np.log(x)

结果如下:

array([ -inf, -inf, -1.60943791, -0.91629073, -0.35667494,  0.,  0. ])

为避免这样的情况出现,可以用到np.clip()

import numpy as np

x = np.array([-10, -1, 0, 0.2, 0.4, 0.7, 1, 10])
eps = 1e-15
x = np.clip(x, eps, 1 - eps)
print("x: ", x)
np.log(x)

结果为:

x:  [1.e-15 1.e-15 1.e-15 2.e-01 4.e-01 7.e-01 1.e+00 1.e+00]
array([-3.45387764e+01, -3.45387764e+01, -3.45387764e+01, -1.60943791e+00,
       -9.16290732e-01, -3.56674944e-01, -9.99200722e-16, -9.99200722e-16])

np.clip()的三个参数:

第一个为数组,

使用第二个参数代替数组中小于该数的数据, 修改后这个就是也最小的数值

使用第三个参数代替数组中大于该数的数据, 修改后这个数就是最大的数值

  • 5
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值