[英]Remove subarray from a 2d array based on their existence in another 2d array (return a new 2d array)
我有兩個二維數組,A 和 B,如下所示。
A=array([[1, 1, 1],
[2, 2, 2],
[3, 3, 3],
[4, 4, 4],
[5, 5, 5],
[6, 6, 6],
[7, 7, 7],
[8, 8, 8],
[9, 9, 9]])
B=array([[1, 1, 1],
[3, 3, 3],
[8, 8, 8]])
如果 A 的子數組存在於 B 中,我想刪除它們。然后返回一個新的二維數組 C,如下所示:
C=array([[2, 2, 2],
[4, 4, 4],
[5, 5, 5],
[6, 6, 6],
[7, 7, 7],
[9, 9, 9]])
目前我已經嘗試過 np.isin 函數,但結果不再是二維數組。
mask = np.isin(A, B, invert=True)
A[mask]
>>array([2, 2, 2, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 9, 9, 9])
您需要聚合軸 1 上的布爾值:
C = A[~np.isin(A,B).all(1)]
輸出:
array([[2, 2, 2],
[4, 4, 4],
[5, 5, 5],
[6, 6, 6],
[7, 7, 7],
[9, 9, 9]])
或in1d
:
C = A[~np.in1d(A, B).all(axis=1)]
現在:
print(C)
輸出:
[[2 2 2]
[4 4 4]
[5 5 5]
[6 6 6]
[7 7 7]
[9 9 9]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.