繁体   English   中英

如何操作2D numpy数组的所有列的逻辑运算

[英]How to operate logic operation of all columns of a 2D numpy array

假设我有以下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

我想知道逻辑运算是否有类似的方法?

就在这里。 使用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

NumPy还有一个reduce函数,类似于Python的reduce 可以将它与NumPy的逻辑运算一起使用。 例如:

>>> 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_orlogical_and )应用于每一行或每列。

暂无
暂无

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

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