- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
Numpy 的 logical_or
函数最多需要两个数组进行比较。如何找到两个以上数组的并集? (关于 Numpy 的 logical_and
并获得两个以上数组的交集,可以提出同样的问题。)
最佳答案
如果您要询问 numpy.logical_or
,然后不,正如文档明确所说,唯一的参数是 x1, x2
,以及可选的 out
:
numpy.
logical_or
(x1, x2[, out]
) =<ufunc 'logical_or'>
您当然可以将多个 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)
但是三个等长一维数组的元组在 NumPy 术语中是 array_like,可以用作二维数组。
在 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
它,或替代 all
带有明确的 axis
.
其他操作呢,比如 logical_xor
?同样,同样的交易……除了在这种情况下没有 all
/any
-type 函数适用。 (你会怎么调用它?odd
?)
关于python - 超过两个参数的 Numpy `logical_or`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20528328/
为了对元素求和,我们有二元运算符 np.add,此外还有处理多个元素的 np.sum。同样,我们有 np.multiply 和 np.product 来进行乘法运算。 但是对于np.logical_o
Numpy 的 logical_or 函数最多需要两个数组进行比较。如何找到两个以上数组的并集? (关于 Numpy 的 logical_and 并获得两个以上数组的交集,可以提出同样的问题。) 最佳
要知道验证两个条件的 numpy 数组的元素,可以使用运算符 *: >>> a = np.array([[1,10,2],[2,-6,8]]) >>> a array([[ 1, 10, 7],
我是一名优秀的程序员,十分优秀!