猿问

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

a并且b是一维numpy数组(或python列表):

我正在这样做:

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

有时b其中有零-因此会发生被零除的错误。

如何有条件地检查中的0值b并将对应的元素设置c为0?


慕妹3146593
浏览 224回答 3
3回答

慕村225694

您可以在列表理解中使用if-else条件:>>> c = [x/y if y else 0 for x,y in zip(a,b)]

四季花海

似乎numpy默认情况下您要执行的操作:>>> a = np.array([1,2,3])>>> b = np.array([0,1,3])>>> a / barray([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>>> carray([ inf,   2.,   1.])>>> c[c == np.inf] = 0>>> carray([ 0.,  2.,  1.])
随时随地看视频慕课网APP

相关分类

Python
我要回答