不明白为什么 numpy.log10 输出 nan?

问题描述 投票:0回答:2

所以我有一个 500k 浮点值数组。当我尝试:

np.log10(my_long_array)

270k 个数字被替换为 nan,而且它们并没有那么小。例如:

In [1]: import numpy as np

In [2]: t = -0.055488893531690543

In [3]: np.log10(t)
/home/aydar/anaconda3/bin/ipython:1: RuntimeWarning: invalid value encountered in log10
  #!/home/aydar/anaconda3/bin/python3
Out[3]: nan

In [4]: type(t)
Out[4]: float

我错过了什么?

python numpy
2个回答
10
投票

负数的对数未定义,因此

nan

文档到

numpy.log10

返回:y:ndarray

x 以 10 为底的对数,逐元素。 当 x 为负数时,返回 NaN。


4
投票
负数总是给出未定义的对数,

对数函数

y = logb(x)

是指数函数的反函数

x = b^y

由于 b 基数为正 (b>0),因此对于任何实数 y,b 基数的 y 次方必须为正 (b^y>0)。所以数字 x 必须是正数 (x>0)。

负数的实数以 b 为底的对数未定义。

logb(x) 对于 x ≤ 0 未定义

© www.soinside.com 2019 - 2024. All rights reserved.