[英]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.