假设我有以下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.
我想知道逻辑运算是否有类似的方法?
就在这里.用途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)
注意当您更改参数会发生什么axis到1:
>>> 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)
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_or或logical_and)累积地应用于每一行或每一列。