[英]Set of all elements in masked part of numpy array
如何找到一組掩碼 numpy 數組掩碼中的所有唯一元素?
例如,我有
seg = np.array([[1,2,3,4]])
mask = np.array([[False, True, False, True]])
我如何把它變成集合{2, 4}
?
有兩種方法可以做到這一點。 如果你有一個 numpy.ma 類型的數組,它是原生的 numpy 掩碼數組類,你可以這樣做:
y = ma.array([1, 2, 3], mask = [0, 1, 0])
print(set((y.tolist())) - {None})
這將打印 {1, 3}。
但是,根據您的設置方式,掩碼和 seg 位於兩個單獨的 numpy 數組中。 所以你必須這樣做:
boundaries = set(seg[np.where(mask)])
print(boundaries)
這將找到掩碼為 1 的索引,在這些索引處獲取 seg 的元素,並從中生成一個集合。
除了@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]
集。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.