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

脾气暴躁的地方和除以零

麻鹏鹍
2023-03-14
问题内容

我需要以x以下方式进行计算(旧版代码):

x = numpy.where(b == 0, a, 1/b)

我想它可以在python-2.x中工作),但是在python-3.x中不工作(if b = 0它返回错误)。

如何使其在python-3.x中工作?

编辑:错误消息(Python 3.6.3):

ZeroDivisionError: division by zero

问题答案:

numpy.where文档指出:

如果xy被赋予与输入的数组是1-d,where相当于::

    [xv if c else yv for (c,xv,yv) in zip(condition,x,y)]

那么,为什么会看到错误?举个简单的例子:

c = 0
result = (1 if c==0 else 1/c)
# 1

到现在为止还挺好。if c==0首先检查,结果为1。该代码不会尝试进行评估1/c。这是因为Python解释器处理一个 惰性
三元运算符,因此仅求值适当的表达式。

现在,我们将其转换为numpy.where方法:

c = 0
result = (xv if c else yv for (c, xv, yv) in zip([c==0], [1], [1/c]))
# ZeroDivisionError

zip([c==0], [1], [1/c])即使在应用逻辑之前,评估中也会发生错误。生成器表达式本身无法求值。作为一个函数,numpy.where不能也确实不能复制Python三元表达式的惰性计算。



 类似资料:
  • 问题内容: 我有一个称为dists的距离数组。我想选择两个值之间的距离。我编写了以下代码行: 但是,这仅针对条件选择 如果我使用临时变量按顺序执行命令,则可以正常工作。为什么上面的代码不起作用,如何使它起作用? 干杯 问题答案: 在 您的特定情况下 ,最好的方法 是 将两个条件更改为一个条件: 它仅创建一个布尔数组,在我看来是更易于阅读,因为它说, 是内部的还是?(尽管我将重新定义为您感兴趣的区域

  • 问题内容: 我正在寻找用numpy中的NaN替换数字,并正在寻找类似numpy.nan_to_num的函数,除非相反。 由于每个数组都可以具有唯一定义的NoDataValue,因此该数字可能会随着处理不同的数组而改变。我看到人们使用字典,但是数组很大,并且充满了正负浮点数。我怀疑尝试将所有这些加载到任何东西以创建密钥的效率不高。 我尝试使用以下内容和numpy要求我使用any()或all()。我意

  • 问题内容: 我正在尝试找到掩盖段的索引。例如: 当前的解决方案看起来像这样(并且 非常 慢,因为我的掩码包含数百万个数字): 有什么办法可以用numpy有效地做到这一点? 我设法对google进行的唯一操作是numpy.ma.notmasked_edges,但它看起来不像我所需要的。 问题答案: 这是一种方法- 样品运行- 用它来获得- 在计时扩大命令datasize -

  • 我做java已经4个月了,所以我还是一个业余爱好者。只是想搞定一些hwk。我似乎找不到正确的技巧来让我的分母通过拒绝文本数据和零,同时保持循环错误消息来很好地发挥作用。另一个问题是,无论分子/分母是什么,我的商都是0.0。有很多问题,任何建议都很感谢。指示如下: --这个程序接受用户输入的(int)分子和(int)分母,然后计算并显示(双)商。 --如果用户为分子输入的是文本而不是数字,则显示一条

  • 主要内容:1.概述,2.doExportUrls,3. Protocol1.概述 Dubbo 服务暴露有两种方式 本地暴露,JVM 本地调用。配置如下: <dubbo:service scope=“local” /> <dubbo:service scope=“remote” /> 在不配置 scope 的情况下,默认两种方式都暴露。 2.doExportUrls 本地暴露服务的顺序图如下: 我们看到 ServiceConfig#export() 方法中,会在配置初始

  • 本文向大家介绍ajax获取用户所在地天气的方法,包括了ajax获取用户所在地天气的方法的使用技巧和注意事项,需要的朋友参考一下 使用ajax获取用户所在地的天气,供大家参考,具体内容如下 1.要获取用户归属地的天气,首先得获取用户所在的市区,这里先获取用户的IP,通过IP获取IP的归属地,从而得到用户地址。 2.因为阿里云提供了通过城市名(city)或者城市编号(cityId) 即可获取天气的AP