繁体   English   中英

numpy.ndarray 上的逐行逻辑运算

[英]Row-wise Logical operation on numpy.ndarray

我有一个 numpy.ndarray 格式如下:

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

我想对每一行的元素应用XOR逻辑运算符。 即我想要如下格式的输出:

[[0.],
 [1.],
 [1.],
 ...,
 [1],
 [0],
 [0]]

我怎样才能在 Python 中做到这一点? 我知道np.logical_xor但我不知道如何有效地使用它。

谢谢 !!!

使用.reduce

import numpy as np

arr = np.array([[0., 0., 0., 0.],
                [0., 1., 0., 0.],
                [0., 1., 0., 0.],
                [1., 0., 0., 1.],
                [1., 1., 1., 1.],
                [1., 1., 1., 1.]])

res = np.logical_xor.reduce(arr, 1).astype(np.int32)
print(res)

输出

[0 1 1 0 0 0]

函数np.logical_xor是一个np.logical_xor ,因此它有 4 个方法,来自文档(重点是我的):

所有 ufunc 都有四种方法。 但是,这些方法仅对采用两个输入参数并返回一个输出参数的标量 ufunc 有意义。 尝试在其他 ufunc 上调用这些方法将导致 ValueError。 类reduce 方法都采用axis 关键字、dtype 关键字和out 关键字,并且数组的维数都必须>= 1。

要沿轴应用.reduce使用.reduce

通过沿一个轴应用 ufunc,将数组的维数减少一。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM