當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python dask.array.isin用法及代碼示例


用法:

dask.array.isin(element, test_elements, assume_unique=False, invert=False)

計算 element in test_elements ,僅在 element 上廣播。返回與 element 形狀相同的布爾數組,如果 element 的元素在 test_elements 中,則返回 True,否則返回 False。

參數

elementarray_like

輸入數組。

test_elementsarray_like

用於測試 element 的每個值的值。如果它是一個數組或類似數組的參數,則該參數被展平。有關非數組類參數的行為,請參閱注釋。

assume_unique布爾型,可選

如果為 True,則假定輸入數組都是唯一的,這樣可以加快計算速度。默認為假。

invert布爾型,可選

如果為 True,則返回數組中的值會被反轉,就像在計算 element not in test_elements 一樣。默認為假。 np.isin(a, b, invert=True) 等同於(但比)np.invert(np.isin(a, b))

返回

isinndarray,布爾

具有與 element 相同的形狀。值 element[isin]test_elements 中。

注意

isin 是 python 關鍵字 in 的元素函數版本。如果ab 是一維序列,則isin(a, b) 大致相當於np.array([item in b for item in a])

elementtest_elements 如果尚未轉換為數組,則它們將被轉換為數組。如果 test_elements 是一個集合(或其他非序列集合),它將被轉換為具有一個元素的對象數組,而不是包含在 test_elements 中的值的數組。這是 array 構造函數處理非序列集合的方式的結果。將集合轉換為列表通常會產生所需的行為。

例子

>>> element = 2*np.arange(4).reshape((2, 2))
>>> element
array([[0, 2],
       [4, 6]])
>>> test_elements = [1, 2, 4, 8]
>>> mask = np.isin(element, test_elements)
>>> mask
array([[False,  True],
       [ True, False]])
>>> element[mask]
array([2, 4])

可以使用 nonzero 獲得匹配值的索引:

>>> np.nonzero(mask)
(array([0, 1]), array([1, 0]))

該測試也可以倒置:

>>> mask = np.isin(element, test_elements, invert=True)
>>> mask
array([[ True, False],
       [False,  True]])
>>> element[mask]
array([0, 6])

由於 array 處理集合的方式,以下內容無法按預期工作:

>>> test_set = {1, 2, 4, 8}
>>> np.isin(element, test_set)
array([[False, False],
       [False, False]])

將集合轉換為列表會產生預期的結果:

>>> np.isin(element, list(test_set))
array([[False,  True],
       [ True, False]])

相關用法


注:本文由純淨天空篩選整理自dask.org大神的英文原創作品 dask.array.isin。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。