为了账号安全,请及时绑定邮箱和手机立即绑定

如何将自然对数应用于矩阵并在矩阵条目为零时获得零

如何将自然对数应用于矩阵并在矩阵条目为零时获得零

泛舟湖上清波郎朗 2022-06-07 19:02:44
在 Python 中,我有一个带有一些零值的矩阵,我如何应用自然对数并在矩阵条目为零时获得零?我正在使用 numpy.log(matrix) 应用自然对数函数,但是当矩阵条目等于零时我得到 nan ,我希望它为零
查看完整描述

3 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

你可以这样做:

arr = numpy.nan_to_num(numpy.log(matrix))

nan_to_num 的行为将所有 NaN 替换为零。

您可以在这里找到更多信息:

另一种选择是将掩码传递给where=np.log 函数的参数。


查看完整回答
反对 回复 2022-06-07
?
SMILET

TA贡献1796条经验 获得超4个赞

如果条目为零(因为 Log of 1 为零)并且反向操作为 ,您可以使用numpy.log1p它将评估为零numpy.expm1

您可以在文档中找到更多信息:

  1. 日志1p

  2. Expm1


查看完整回答
反对 回复 2022-06-07
?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

np.log是一个ufunc带where参数的。这告诉它哪些元素x将用于计算。其余的被跳过。这最好与out参数一起使用,如下所示:


In [25]: x = np.array([1.,2,0,3,10,0])                                          

In [26]: res = np.zeros_like(x)                                                 

In [27]: idx = x>0                                                              

In [28]: np.log(x)                                                              

/usr/local/bin/ipython3:1: RuntimeWarning: divide by zero encountered in log

  #!/usr/bin/python3

Out[28]: 

array([0.        , 0.69314718,       -inf, 1.09861229, 2.30258509,

             -inf])

In [29]: np.log(x, out=res, where=idx)                                          

Out[29]: 

array([0.        , 0.69314718, 0.        , 1.09861229, 2.30258509,

       0.        ])


查看完整回答
反对 回复 2022-06-07
  • 3 回答
  • 0 关注
  • 145 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信