簡體   English   中英

numpy 數組的屏蔽部分中的所有元素的集合

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM