- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我注意到在代码中:
import numpy as np
a = 0.0
print a / a
b = np.array( [0.0] )
print b[0] / b[0]
第一个打印函数抛出 ZeroDivisionError,但第二个输出 nan
。我知道 type(b[0])
是 numpy.float64
,而 type(a)
是 float
。我有两个问题:
1) 为什么要这样实现?
2) 无论如何让它抛出 ZeroDivisionError 吗?
最佳答案
我必须说,我更惊讶的是常规 Python float 确实会抛出错误。据我所知,鉴于 IEEE 754 中定义的 float ,返回 NaN
是正确的方法。
http://grouper.ieee.org/groups/754/faq.html#exceptions
Why doesn't division by zero (or overflow, or underflow) stop the program or trigger an error? Why does a standard on numbers include "not-a-number" (
NaN
)?The 754 model encourages robust programs. It is intended not only for numerical analysts but also for spreadsheet users, database systems, or even coffee pots. The propagation rules for
NaN
s and infinities allow inconsequential exceptions to vanish. Similarly, gradual underflow maintains error properties over a precision's range.When exceptional situations need attention, they can be examined immediately via traps or at a convenient time via status flags. Traps can be used to stop a program, but unrecoverable situations are extremely rare. Simply stopping a program is not an option for embedded systems or network agents. More often, traps log diagnostic information or substitute valid results.
Flags offer both predictable control flow and speed. Their use requires the programmer be aware of exceptional conditions, but flag stickiness allows programmers to delay handling exceptional conditions until necessary.
在处理不具有此类功能的数字(例如整数除法)时,错误是一种适当的响应。
关于python - 为什么 NumPy float 不给出 ZeroDivisionError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20670145/
我正在尝试从 Pandas 数据框中绘制相关矩阵 import matplotlib.pyplot as plt import pandas as pd data = pd.read_csv('dat
当程序中引发错误的行除了将数字转换为字符串的数学指令外,不包含任何数学指令时,谁能提出python可能引发ZeroDivisionError的原因: line 194, in print_summar
所以我使用二次方程来产生实根。root1 和 root2 当我除以零时,让A = 0 两个根分别是0.0和-0.0 这应该给出错误:ZeroDivisionError 这是我的代码: import m
我正在尝试调整一个函数以避免 ZeroDivisionError。我尝试过的几种方法都没有奏效,我正在寻求帮助。 我已经尝试将以下内容添加到我的代码中: try: try: raise Excep
我遇到了一些图像的零除法错误(尽管其中很多都工作得很好): 代码如下: image = skimage.io.imread('test.png', False) image_gray = skimag
我需要对一些数据进行计算,所以在注释中我将一些数学逻辑与其他字段放在一起,但只要有 0,它就会抛出错误。我需要在注释中处理该错误。我的代码如下所示: total_amount = Invoice.ob
我正在编写绘制 Mandelbrot 集版本的代码。当它运行时,它接受两个输入 a 和 b,并将其转换为一个复数(例如 complex(a,b))。然后它绘制一个 Mandelbrot 集,其中 z
我有以下代码: def chunk_trades(A): last = A[0] new = [] for x in A.iteritems(): if np.
我正在试用 NaiveBayes Python 库 (python 2.7) 我想知道为什么运行这段代码会给我一个ZeroDivisionError。 #!/usr/bin/env python im
我想找到一个积分((sin x)^8, {x,0,2*Pi})并尝试编写一个简单的程序,没有任何外部模块作为“数学”,计算泰勒级数并总结它的间隔 (0,2*Pi) 但有错误 Traceback (mo
我有一个关于我的 python 代码的问题。我还在学习,所以请不要介意任何错误。作业是计算某人在正常年份和金星年份的年龄。 平年很容易,但金星年有点难。 a = input("What is your
我在 Python 中运行一个非常耗时的后处理器,遇到了一个 FloatingPointError,而我期待的是一个 ZeroDivisionError。 我的代码在 try except 语句中捕获
我有这些代码,但它给出了零除法错误。我无法弄清楚出了什么问题。我需要你的帮助。谢谢。 :) from math import sqrt def inisialisasi(): filename
我有两个大的 numpy 数组,我需要将它们分开。 由于我在 Python 32 位上工作,并且数组太大,为了避免 FloatingPointError,我正在做,例如: x = numpy.arra
假设我有两个变量 x 和 y,它们可以是任何值。我必须将 x 除以 y。 y 可以为零。现在我有两种方法 1) if y == 0: continue # or break, sup
创建一个 lambda 函数来计算加权平均值并将其发送到字典。 wm = lambda x: np.average(x, weights=df.loc[x.index, 'WEIGHTS']) # D
执行annuity_rate(5, 100, 510)或尝试使用负值时,我一直收到此错误。我怎样才能解决这个问题? 它适用于较大的数字,但对于负数和较小的数字却不起作用。 def pv_annuity
我正在做一项作业,要求我编写一个计算列表平方平均值的程序。 因此,如果程序正常,它将显示: avgSumOfSquares() Enter next number: 3.27 Enter next n
我有一个数据框dayData,其中包括以下列'ratio'和'first_power',其类型如下: Name: ratio, dtype: float64 first power Name: fi
我发现了一个奇怪的行为,希望有人对此做出解释。我在做: if len(list) > 1 and len(list2) > 1: total = sum(list) + sum(list2)
我是一名优秀的程序员,十分优秀!