标签: divide-by-zero

Pandas/numpy 加权平均 ZeroDivisionError

创建 lambda 函数来计算加权平均值并将其发送到字典。

wm = lambda x: np.average(x, weights=df.loc[x.index, 'WEIGHTS'])

# Define a dictionary with the functions to apply for a given column:
f = {'DRESS_AMT': 'max', 
     'FACE_AMT': 'sum',
     'Other_AMT': {'weighted_mean' : wm}}

# Groupby and aggregate with dictionary:
df2=df.groupby(['ID','COL1'], as_index=False).agg(f)
Run Code Online (Sandbox Code Playgroud)

此代码有效,但如果权重总计为 0 ,则加权平均 lambda 函数会失败ZeroDivisionError。在这些情况下,我希望输出“Other_AMT”仅为 0。

我阅读了有关使用 np.ma.average (屏蔽平均值)的文档,但无法理解如何实现它

python numpy divide-by-zero weighted-average pandas

5
推荐指数
1
解决办法
4162
查看次数

go float 零除编译器错误

这种行为有何意义?仅打印编译器警告而不是错误不是更有意义吗?

func main() {
var y float64 = 0.0
var x float64 = 4.0 / y
fmt.Println(x)
}
Run Code Online (Sandbox Code Playgroud)

+信息

func main() {
var x float64 = 4.0 / 0.0
fmt.Println(x)
}
Run Code Online (Sandbox Code Playgroud)

prog.go:9:22:除以零

go divide-by-zero

5
推荐指数
1
解决办法
3762
查看次数

是否可以强制 Clojure 使用原始类型而不是盒装版本?

我有以下代码示例:

(type (apply / [5.0 0]))
Run Code Online (Sandbox Code Playgroud)

它引发意外错误 - “除以零”(预期行为:返回 Inf)

可能是由于自动装箱而发生的 - 可以预防吗?

java boxing clojure division divide-by-zero

5
推荐指数
1
解决办法
252
查看次数

除以零:无限,NaN或零分割误差?

为什么不是1/0 == Inf每种语言?这不是数学上最正确的反应吗?

我熟悉的所有语言都能够表达无限和NaN值,那么为什么他们会选择抛出错误或返回NaN呢?是否只是让科学应用程序开发人员的生活变得更难?;-)

更新:我们应该关闭这个问题,因为我错误地认为1f/0f == Float.NaN在Java中.但我错了:它确实正确回归Float.Infinity.这是我的主要困惑; 只要没有语言返回NaN,一些语言抛出错误的事实是可以理解的.

math programming-languages divide-by-zero

4
推荐指数
1
解决办法
1万
查看次数

为什么在Ruby 0.0/0,3.0/0和3/0中表现不同?

如果我除以0,我会得到ZeroDivisionError,Infinity或NaN,具体取决于划分的内容.

ruby-1.9.2-p180 :018 > 0.0 / 0
 => NaN 

ruby-1.9.2-p180 :020 > 3.0 / 0
 => Infinity 

ruby-1.9.2-p180 :021 > 3 / 0
ZeroDivisionError: divided by 0
Run Code Online (Sandbox Code Playgroud)

我知道0.0/0不是无限(用数学术语),而3.0/0是为什么那么为什么不是3/0无穷大?为什么划分整数会引发异常,但划分浮点数不会?

ruby integer-division divide-by-zero

4
推荐指数
1
解决办法
1014
查看次数

x!= 0.0是对DivideByZeroException的安全检查吗?

为了防止C#中的DivideByZeroException,人们经常会写出类似的东西

double f(double x) {
  if (x != 0.0) return 1000.0/x;
  else return 0.0;
}
Run Code Online (Sandbox Code Playgroud)

鉴于浮点运算总是有不精确的事实,我想知道是否保证这个函数永远不会抛出DivideByZeroException.

c# divide-by-zero

4
推荐指数
1
解决办法
199
查看次数

Python除以零错误

我在python中有一个Class,具有以下属性:

    self.number1 = 0
    self.number2 = 0
    self.divided = self.number1/self.number2
Run Code Online (Sandbox Code Playgroud)

这当然会抛出零误差:

ZeroDivisionError:整数除法或模数为零

这个想法是我稍后会增加number1和number2,但是self.divided会自动更新吗?如果是自动更新,那么如何解决零错误?谢谢.

python divide-by-zero

4
推荐指数
2
解决办法
2万
查看次数

如何向用户显示Infinity

我正在设计一个界面,向用户显示一个表格,其中包含营销支出和转化营销支出.

表格是这样的:

<table>
  <tr>
    <th>Spend</th>
    <th>Conversions</th>
    <th>Cost per Conversion</th>
  </tr>
  <tr>
    <td>$45.92</td>
    <td>231</td>
    <td>$0.20</td>
  </tr>
  <tr>
    <td>$22.12</td>
    <td>0</td>
    <td>{{?}}</td>
  </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

该表由JavaScript填充,可动态计算转换率.

当JS进入第三行时,我最终会显示字符串"Infinity",显示由于除以零而导致的转换率(22.12/0)

我想知道的是,从用户体验的角度来看,我应该在那里展示什么?这些是用户,而不是数学家,因此使用Infinity符号会使它们混淆,使用0会描绘不正确的数据.

user-interface user-experience divide-by-zero

4
推荐指数
1
解决办法
90
查看次数

如何防止除以零或替换Theano中的无限值?

我在Theano中使用了一个成本函数,它涉及一个规范化术语,需要我计算这个术语:

T.sum(c / self.squared_euclidean_distances)
Run Code Online (Sandbox Code Playgroud)

由于self.squared_euclidean_distances的某些值可能为零,因此会生成Nan值.我该如何解决这个问题?我尝试使用T.isinf,但没有成功.一种解决方案是将self.squared_euclidean_distances中的零删除为一个小数字,或将T.sum(c/self.squared_euclidean_distances)中的无限数字替换为零.我只是不知道如何在Theano中替换这些值.

python numpy nan divide-by-zero theano

4
推荐指数
1
解决办法
2831
查看次数

Java - 除以零时无法捕获ArithmeticException

我一定在这里做了些蠢事.但我似乎无法弄清楚为什么这个简单的代码不起作用.InputMismatchException有效,但ArithmeticException永远不会被捕获.

import java.util.InputMismatchException;
import java.util.Scanner;
public class SubChap02_DivisionByZero {
    public static double quotient(double num, double denum) throws ArithmeticException {
        return num / denum;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double num, denum, result;
        boolean continueLoop = true;
        do {
            try {
                System.out.printf("Please enter the numerator: ");
                num = scanner.nextFloat();
                System.out.printf("Please enter the denumerator: ");
                denum = scanner.nextFloat();
                result = quotient(num, denum);
                continueLoop = false;
                System.out.printf("THIS: %.2f/%.2f is %.2f\n", num, denum, result);    
                scanner.close();
          } catch …
Run Code Online (Sandbox Code Playgroud)

java divide-by-zero

4
推荐指数
1
解决办法
1014
查看次数