如何找到一組掩碼 numpy 陣列掩碼中的所有唯一元素?
例如,我有
seg = np.array([[1,2,3,4]])
mask = np.array([[False, True, False, True]])
我如何把它變成套裝{2, 4}?
uj5u.com熱心網友回復:
有兩種方法可以做到這一點。如果你有一個 numpy.ma 型別的陣列,它是原生的 numpy 掩碼陣列類,你可以將掩碼陣列展平,然后將其轉換為串列,然后是一個集合:
y = ma.array(seg, mask=1-mask)
print(set(y.flatten().tolist()) - {None})
這將列印 {2, 4}。
但是,根據您的設定方式,掩碼和 seg 位于兩個單獨的 numpy 陣列中。所以你可以這樣做:
boundaries = set(seg[np.where(mask)])
print(boundaries)
這將找到掩碼為 1 的索引,在這些索引處獲取 seg 的元素,并從中生成一個集合。
編輯:您可以根據 hpaulj 的評論使用 seg[mask] :
boundaries = set(seg[mask])
print(boundaries)
這將列印 {2, 4}。
uj5u.com熱心網友回復:
除了@chenjesu 的回答之外,您還可以[2 4]使用以下函式獲得一個集合而不是一個 numpy 陣列:
def find_unique_elements(seg, mask):
# Find the unique elements in the mask of the masked array.
unique_elements = np.unique(seg[mask])
return unique_elements
在你的情況下,這將回傳[2 4]集合。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/345550.html
上一篇:僅使用單個串列輸入填充矩陣
