gpt4 book ai didi

python - 使用 np.log(array) 时忽略负值

转载 作者:太空宇宙 更新时间:2023-11-03 12:48:01 25 4
gpt4 key购买 nike

当获取 numpy 数组中特定列的日志时,即 logSFROIIdC = np.log(data_dC[:, 9]) 编译器返回错误:

-c:13: RuntimeWarning: divide by zero encountered in log.

现在,我知道为什么会发生这种情况,即 log(-1) = Math Error。

但是,我希望能够调用某些东西或编写一些代码,然后跳过数组中会导致此错误的任何值,然后完全忽略该行。允许该数据列再次可用。

我尝试了各种方法,这是最后的手段,请教社区。

最佳答案

您可以使用 np.seterr 控制此行为.这是一个例子。

首先,告诉 numpy 忽略无效值:

In [4]: old = np.seterr(invalid='ignore')

现在 log(-1) 不会生成警告:

In [5]: x = np.array([-1.,1])

In [6]: np.log(x)
Out[6]: array([ nan, 0.])

恢复之前的设置:

In [7]: np.seterr(**old)
Out[7]: {'divide': 'warn', 'invalid': 'ignore', 'over': 'warn', 'under': 'ignore'}

现在我们收到警告:

In [8]: np.log(x)
/Users/warren/anaconda/bin/ipython:1: RuntimeWarning: invalid value encountered in log
#!/Users/warren/anaconda/python.app/Contents/MacOS/python
Out[8]: array([ nan, 0.])

还有一个上下文管理器,np.errstate .例如,

In [10]: with np.errstate(invalid='ignore'):
....: y = np.log(x)
....:

In [11]: y
Out[11]: array([ nan, 0.])

关于python - 使用 np.log(array) 时忽略负值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24972493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com