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

noo*_*guo 7 python numpy

假设我有以下2D NumPy由四行三列组成的数组:

>>> a = numpy.array([[True, False],[False, False], [True, False]])
>>> array([[ True, False],
       [False, False],
       [ True, False]], dtype=bool)
Run Code Online (Sandbox Code Playgroud)

什么是生成1D包含逻辑或所有列(如[True, False])的数组的有效方法?

我在网上搜索,发现有人指的sum(axis=)是计算sum.

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

jua*_*aga 9

就在这里.用途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)
Run Code Online (Sandbox Code Playgroud)

注意当您更改参数会发生什么axis1:

>>> a.any(axis=1)
array([ True, False,  True], dtype=bool)
>>> 
Run Code Online (Sandbox Code Playgroud)

如果你想要逻辑 - 并使用all:

>>> b.all(axis=0)
array([False, False], dtype=bool)
>>> b.all(axis=1)
array([ True, False, False], dtype=bool)
>>> 
Run Code Online (Sandbox Code Playgroud)

另请注意,如果省略axis关键字参数,则它适用于每个元素:

>>> a.any()
True
>>> a.all()
False
Run Code Online (Sandbox Code Playgroud)

  • 看起来你忘了在你的例子中包含 `b`:`b = np.array([[True, True],[False, False], [True, False]])` (2认同)

Geo*_*rgy 6

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])
Run Code Online (Sandbox Code Playgroud)

它还具有axis参数:

>>> np.logical_or.reduce(a, axis=1)
array([ True, False,  True])
>>> np.logical_and.reduce(a, axis=1)
array([False, False, False])
Run Code Online (Sandbox Code Playgroud)

的想法reduce是,它将一个函数(在我们的例子中logical_orlogical_and)累积地应用于每一行或每一列。