簡體   English   中英

Python 提取不在另一個 numpy 數組中的行

[英]Python Extracting rows not in another numpy array

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

以下是我嘗試的一些功能的結果:鏈接到圖片

在圖像中,第一個和最后一個結果是正確的。 如果 'b' 是矩陣,則轉換為列表有效,但如果它是數組,則 .all().any() 有效。

np.isin() 也不起作用,因為 'a' 是多維的。

實現這一目標的一般方法是什么?

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]])

那么a not in b中的元素是:

>>> a[~np.isin(a,b)].reshape(-1, a.shape[1])
array([[7, 8, 9]])

不在ca元素是(假設兩個矩陣中的列數相同):

>>> a[~np.isin(a,c)].reshape(-1, a.shape[1])
array([[4, 5, 6],
       [7, 8, 9]])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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