簡體   English   中英

根據它們在另一個二維數組中的存在從二維數組中刪除子數組(返回一個新的二維數組)

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

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