numpy.intersect1d#
- numpy.intersect1d(ar1, ar2, assume_unique=False, return_indices=False)[source]#
找出兩個陣列的交集。
傳回已排序、唯一的,且同時存在於兩個輸入陣列中的值。
- 參數:
- ar1, ar2array_like
輸入陣列。如果還不是一維陣列,將會被展平。
- assume_uniquebool
如果為 True,則輸入陣列都會被假設為唯一值,這可以加速計算。如果為 True,但
ar1
或ar2
並非唯一值,可能會導致不正確的結果和超出邊界的索引。預設值為 False。- return_indicesbool
如果為 True,則會傳回對應於兩個陣列交集的索引。如果有多個相同的值,則會使用第一個出現的值。預設值為 False。
- 傳回值:
- intersect1dndarray
已排序的一維陣列,包含共同且唯一的元素。
- comm1ndarray
ar1 中共同值的首次出現的索引。僅在 return_indices 為 True 時提供。
- comm2ndarray
ar2 中共同值的首次出現的索引。僅在 return_indices 為 True 時提供。
範例
>>> import numpy as np >>> np.intersect1d([1, 3, 4, 3], [3, 1, 2, 1]) array([1, 3])
要交集兩個以上的陣列,請使用 functools.reduce
>>> from functools import reduce >>> reduce(np.intersect1d, ([1, 3, 4, 3], [3, 1, 2, 1], [6, 3, 4, 2])) array([3])
要傳回輸入陣列中共同值的索引以及交集後的值
>>> x = np.array([1, 1, 2, 3, 4]) >>> y = np.array([2, 1, 4, 6]) >>> xy, x_ind, y_ind = np.intersect1d(x, y, return_indices=True) >>> x_ind, y_ind (array([0, 2, 4]), array([1, 0, 2])) >>> xy, x[x_ind], y[y_ind] (array([1, 2, 4]), array([1, 2, 4]), array([1, 2, 4]))