当前位置: 首页 > 面试题库 >

有哪些可能导致Python出现NaN的计算?

江承嗣
2023-03-14
问题内容

我一直在搜索,似乎NaN在不同的编程语言中对s进行了零散的讨论,包括一些特定情况,但没有详尽无遗或清晰明了。

NaN在Python中导致N的最常见操作是什么,这些操作是在使用NumPy或SciPy时产生的?


问题答案:

如果您在不使用浮点环境的情况下执行以下任何一项操作,则应该得到一个NaN,而您以前没有使用过NaN:

  • 0/0 (在顶部和底部都签名)
  • inf/inf (在顶部和底部都签名)
  • inf - inf(-inf) + infinf + (-inf)(-inf) - (-inf)
  • 0 * infinf * 0(均在两个因素上均签字)
  • sqrt(x) 什么时候 x < 0
  • fmod(x, y)y = 0x无限时; 这fmod是浮点余数。

机器算术这些方面的规范参考是IEEE
754规范
。第7.1节描述了无效的操作异常,这是您将要获得NaN时引发的异常。IEEE
754中的“异常”意味着与编程语言上下文不同。

许多特殊的函数实现以其尝试实现的功能的奇异点来记录其行为。对于参见手册页atan2log,例如。

您是在专门询问NumPy和SciPy。我不确定这是说“我正在询问有关NumPy幕后发生的机器算术”还是“我正在询问有关eig()内容”。我假设是前者,但是此答案的其余部分试图与NumPy中的更高级别函数建立模糊的联系。基本规则是:
如果函数的实现犯了上述错误之一,则将获得NaN。

例如fft,对于,NaN如果输入值约为1e1010或大于,则很容易获得;如果输入值约为1e-1010或小于,则有可能导致精度的无声损失。但是,除了真正可笑的扩展输入之外,您还可以放心使用fft

对于涉及矩阵数学的事情,inf - inf如果您的人数众多
矩阵病情严重,NaN可能会出现(通常是通过路线)。关于如何通过数值线性代数进行运算的完整讨论太长了,无法解决。我建议在几个月的时间里翻阅一本数字线性代数书(Trefethen和Bau很流行)。

在编写和调试“不应”生成NaN的代码时,我发现有用的一件事是告诉计算机捕获是否发生NaN。在GNU C中,我这样做:

#include <fenv.h>
feenableexcept(FE_INVALID);


 类似资料:
  • 问题内容: 我想描述一下AOP有效参与应用程序设计的可能情况。到目前为止,我所遇到的是: 伐木相关 安全检查 交易管理 调整旧版应用程序 还要别的吗? (不一定是基于Spring的基于代理的AOP,而是JBoss AOP。) 问题答案: 我可以举两个使用它的示例: 在JMX中自动注册对象以进行远程管理。如果使用我们的注释对一个类进行注释,则我们可以通过一个方面来监视该类的新实例,并将其自动注册到J

  • 问题内容: 如何找到包含自然语言工具包(nltk)使用的所有可能pos标记的列表? 问题答案: 这本书有一个注释,说明如何在标签集上寻求帮助,例如: 其他人可能相似。(注意:也许您首先需要为此从下载助手的“ 模型” 部分进行下载)

  • 如果我们转而使用软件包,需要注意的主要考虑因素和危险是什么?什么可能会坏?是否会影响调试、测试、构建(使用FinalBuilder)或维护的便利性?运行时内存利用率是否会增加到不可接受的程度,因为我们将在运行时加载整个BPL,而不仅仅是链接器所需的单元? 我知道,唯一真正的答案将来自于在我们的具体应用程序中尝试它,但我将非常感谢任何已经走上这条道路或拒绝它的人的一些建议。

  • 本文向大家介绍Redis 有哪些功能?相关面试题,主要包含被问及Redis 有哪些功能?时的应答技巧和注意事项,需要的朋友参考一下 数据缓存功能 分布式锁的功能 支持数据持久化 支持事务 支持消息队列

  • 1、基于本机内存的缓存 当调用api访问数据库时,假如此过程需要2秒,如果每次请求都要访问数据库,那将对服务器造成巨大的压力,如果将此sql的查询结果存到Redis中,再次请求时,直接从Redis中取得,而不是访问数据库,效率将得到巨大的提升,Redis可以定时去更新数据(比如1分钟)。 2、如果电脑重启,写入内存的数据是不是就失效了呢,这时Redis还提供了持久化的功能。 3、哨兵(Sentin

  • 问题内容: 我在搜索有关如何从我的应用程序发送电子邮件的过程中,遇到了以下主题: 如何从我的Android应用发送电子邮件 它解决了在他的动作send中添加类型的问题: 这对我也适用,我可以发送电子邮件,这很棒。我只是想知道我还能在那里设置什么。 我知道,如果我不进行任何设置,它将显示带有所有可用选项的列表。我想强迫用户使用我选择的任何选项来共享它。我可以探索这一点来迫使用户以我想要的任何方式共享

  • 问题内容: 简单的问题: 有哪些Python GUI API,任何给定API的优点是什么? 我不是要在这里发动一场宗教战争,我只是想就Python GUI API方面的所有问题取得良好的解决。 问题答案: 这是一个很好的清单。

  • 我们都知道,我们应该使用准备好的语句或适当的替换/格式化规则,以防止sql注入到我们的应用程序中。 然而,在查看MySQL的字符文本列表时,我注意到它包括以下字符: ASCII NUL( )字符 一个退格字符 \n换行符(换行符) 回车符 制表符 ASCII 26(CtrlZ)。见下表注释 反斜杠字符 一个字符 一个字符 现在,虽然需要对