給定兩個 numpy 矩陣“a”和“b”,我試圖提取“a”中不在“b”中的行。問題是“b”的維度不固定。如果我使用.tolist(),那么當 'b' 的維度 = 1 時它不起作用,因為它認為每一行都具有 'b' 的單個元素,而不是整個 'b' 陣列。
以下是我嘗試過的一些函式的結果:

在影像中,第一個和最后一個結果是正確的。如果 'b' 是矩陣,則轉換為串列有效,但如果它是陣列,則.all().any()有效。
np.isin() 也不起作用,因為 'a' 是多維的。
實作這一目標的一般方法是什么?
uj5u.com熱心網友回復:
np.isin 實際上有效,正確的做法是這樣的:
>>> a = np.arange(1, 10).reshape(3,3)
>>> a
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
>>> b
array([[1, 2, 3],
[4, 5, 6]])
>>> c = np.arange(1, 4).reshape(1, 3)
>>> c
array([[1, 2, 3]])
那么 in anot in 的元素b是:
>>> a[~np.isin(a,b)].reshape(-1, a.shape[1])
array([[7, 8, 9]])
anot inc中的元素是(假設兩個矩陣中的列數相同):
>>> a[~np.isin(a,c)].reshape(-1, a.shape[1])
array([[4, 5, 6],
[7, 8, 9]])
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/369808.html
上一篇:簽入檔案時如何解決TFS問題
