我们说我有以下2D
NumPy
数组,包含四行和三列:
>>> a = numpy.array([[True, False],[False, False], [True, False]])
>>> array([[ True, False],
[False, False],
[ True, False]], dtype=bool)
生成包含逻辑或所有列(如1D
)的[True, False]
数组的有效方法是什么?
我搜索了网络,发现有人提到sum(axis=)
来计算sum
。
我想知道逻辑运算是否有类似的方式?
答案 0 :(得分:7)
是的,有。使用any
:
>>> a = np.array([[True, False],[False, False], [True, False]])
>>> a
array([[ True, False],
[False, False],
[ True, False]], dtype=bool)
>>> a.any(axis=0)
array([ True, False], dtype=bool)
注意将参数axis
更改为1
时会发生什么:
>>> a.any(axis=1)
array([ True, False, True], dtype=bool)
>>>
如果您想要逻辑 - 并使用all
:
>>> b.all(axis=0)
array([False, False], dtype=bool)
>>> b.all(axis=1)
array([ True, False, False], dtype=bool)
>>>
另请注意,如果省略axis
关键字参数,则它适用于每个元素:
>>> a.any()
True
>>> a.all()
False
答案 1 :(得分:1)
NumPy还有一个reduce
函数,类似于Python的reduce
。可以将它与NumPy的logical operations一起使用。例如:
>>> a = np.array([[True, False],[False, False], [True, False]])
>>> a
array([[ True, False],
[False, False],
[ True, False]])
>>> np.logical_or.reduce(a)
array([ True, False])
>>> np.logical_and.reduce(a)
array([False, False])
它还有axis
参数:
>>> np.logical_or.reduce(a, axis=1)
array([ True, False, True])
>>> np.logical_and.reduce(a, axis=1)
array([False, False, False])
reduce
的想法是它累积地将一个函数(在我们的例子中为logical_or
或logical_and
)应用于每一行或每列。