赞
踩
如果您要询问numpy.logical_or,则不,正如文档中明确指出的那样,唯一的参数是x1, x2,并且可以选择out:
numpy.logical_or(x1, x2[, out])=
您当然可以logical_or像这样将多个调用链接在一起:
x = np.array([True, True, False, False]) y = np.array([True, False, True, False]) z = np.array([False, False, False, False]) np.logical_or(np.logical_or(x, y), z) array([ True, True, True, False], dtype=bool) 在NumPy中推广这种链接的方法是reduce:
np.logical_or.reduce((x, y, z)) array([ True, True, True, False], dtype=bool) 当然这也将工作,如果你有一个多维数组,而不是单独的阵列,事实上,这就是它的意思被使用:
xyz = np.array((x, y, z)) xyz array([[ True, True, False, False], [ True, False, True, False], [False, False, False, False]], dtype=bool) np.logical_or.reduce(xyz) array([ True, True, True, False], dtype=bool) 但是,三个等长的1D数组的元组在NumPy方面类似于array_,并且可以用作2D数组。
在NumPy之外,您还可以使用Python的reduce:
functools.reduce(np.logical_or, (x, y, z)) array([ True, True, True, False], dtype=bool) 但是,与NumPy的不同reduce,并不是经常需要Python的。在大多数情况下,有一种更简单的处理方式-例如,将多个Python or运算符链接在一起,不要停下reduce来operator.or_,只需要使用即可any。如果没有,使用显式循环通常更易读。
实际上,NumPy any也可以用于这种情况,尽管它并不是那么简单。如果您未明确为其指定轴,则最终将得到标量而不是数组。所以:
np.any((x, y, z), axis=0) array([ True, True, True, False], dtype=bool) 如您所料,它logical_and是相似的-您可以将其链接起来,np.reduce也可以用显式functools.reduce替换。allaxis
那么其他操作logical_xor呢?再次,同样的处理……除了在这种情况下不存在all/ any-type函数。(你叫什么odd??)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。