[英]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]])
不在c
中a
元素是(假設兩個矩陣中的列數相同):
>>> 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.