我知道 Numpy 提供了logical_and()它允許我們只為 True 值相交兩個布爾陣列(True 和 True 會產生 True,而 True 和 False 會產生 False)。例如,
a = np.array([True, False, False, True, False], dtype=bool)
b = np.array([False, True, True, True, False], dtype=bool)
np.logical_and(a, b)
> array([False, False, False, True, False], dtype=bool)
但是,我想知道如何將其應用于整個陣列中的兩個子陣列?例如,考慮陣列:
[[[ True, True], [ True, False]], [[ True, False], [False, True]]]
我要相交的兩個子陣列是:
[[ True, True], [ True, False]]
和
[[ True, False], [False, True]]
這應該產生:
[[ True, False], [False, False]]
有沒有辦法指定我想將logical_and() 應用于最外層的子陣列以將兩者結合起來?
uj5u.com熱心網友回復:
您可以.reduce()沿第一個軸使用:
>>> a = np.array([[[ True, True], [ True, False]], [[ True, False], [False, True]]])
>>> np.logical_and.reduce(a, axis=0)
array([[ True, False],
[False, False]])
即使您的外部陣列中有兩個以上的“子陣列”,這也有效。與解包方法相比,我更喜歡這種方法,因為它允許您將函式 ( np.logical_and) 應用到陣列的任何軸上。
uj5u.com熱心網友回復:
如果我正確理解您的問題,您希望這樣做:
import numpy as np
output = np.logical_and(a[:, 0], a[:, 1])
這只是對您的陣列進行切片,以便您可以使用 logical_and 您的結果建議的方式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/487610.html
標籤:Python 数组 python-3.x 麻木的 布尔值
上一篇:在兩個數字之間生成亂數
