为了账号安全,请及时绑定邮箱和手机立即绑定

Python-使用测试列出理解以避免被零除

Python-使用测试列出理解以避免被零除

慕妹3146593 2021-03-29 17:15:06
a并且b是一维numpy数组(或python列表):我正在这样做:>>> c = [x/y for x,y in zip(a,b)]有时b其中有零-因此会发生被零除的错误。如何有条件地检查中的0值b并将对应的元素设置c为0?
查看完整描述

3 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

您可以在列表理解中使用if-else条件:

>>> c = [x/y if y else 0 for x,y in zip(a,b)]


查看完整回答
反对 回复 2021-04-06
?
四季花海

TA贡献1811条经验 获得超5个赞

似乎numpy默认情况下您要执行的操作:


>>> a = np.array([1,2,3])

>>> b = np.array([0,1,3])

>>> a / b

array([0, 2, 1])

如@Jaime所指出的,如果至少一个array类型为float类型,则除以0会得到inf,因此您需要执行以下操作:


>>> a = np.array([1,2,3], dtype='float')

>>> b = np.array([0,1,3], dtype='float')

>>> c = a / b

>>> c

array([ inf,   2.,   1.])

>>> c[c == np.inf] = 0

>>> c

array([ 0.,  2.,  1.])


查看完整回答
反对 回复 2021-04-06
  • 3 回答
  • 0 关注
  • 223 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号