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

在 Python 中,我有一个带有一些零值的矩阵,我如何应用自然对数并在矩阵条目为零时获得零?我正在使用 numpy.log(matrix) 应用自然对数函数,但是当矩阵条目等于零时我得到 nan ,我希望它为零



泛舟湖上清波郎朗
浏览 146回答 3
3回答

MMTTMM

你可以这样做:arr = numpy.nan_to_num(numpy.log(matrix))nan_to_num 的行为将所有 NaN 替换为零。您可以在这里找到更多信息:https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.nan_to_num.html另一种选择是将掩码传递给where=np.log 函数的参数。

SMILET

如果条目为零(因为 Log of 1 为零)并且反向操作为 ,您可以使用numpy.log1p它将评估为零numpy.expm1。您可以在文档中找到更多信息:日志1pExpm1

至尊宝的传说

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/python3Out[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.        ])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python