讓我們說我有一個數字的數組(例如:整數)。我想在序列中發生的任何地方都刪除數字k
。目前我正在爲此寫一個for循環,這似乎是一個矯枉過正的問題。有沒有一個簡單的方法來做到這一點?一般來說,如果我有一個以上的號碼被丟棄,該怎麼辦?從numpy數組中刪除數字
3
A
回答
5
假設A
到輸入陣列和B
爲要除去含有的數字陣列,可以使用np.in1d
得到的B
匹配的掩模在A
,然後使用掩模的反相版本映射A
和獲得所需的輸出。下面是執行會是什麼樣子 -
A[~np.in1d(A,B).reshape(A.shape)]
採樣運行 -
In [14]: A
Out[14]: array([3, 2, 1, 4, 3, 3, 2, 2, 4, 1])
In [15]: B
Out[15]: array([2, 4])
In [16]: A[~np.in1d(A,B).reshape(A.shape)]
Out[16]: array([3, 1, 3, 3, 1])
對於二維輸入數組的情況下,你會得到一維數組作爲輸出,就像這樣 -
In [21]: A
Out[21]:
array([[3, 3, 3, 4, 0, 4],
[2, 4, 4, 4, 4, 3],
[1, 2, 4, 4, 3, 1],
[0, 3, 1, 4, 1, 1]])
In [22]: B
Out[22]: array([2, 4])
In [23]: A[~np.in1d(A,B).reshape(A.shape)]
Out[23]: array([3, 3, 3, 0, 3, 1, 3, 1, 0, 3, 1, 1, 1])
3
如果您嘗試檢查單個標量值。在numpy中,當您將向量與標量值進行比較時,會返回一個數組True/False
值,其中每個元素指示標量值與元素的比較結果。示例 -
In [15]: a = np.random.randint(10,100, (100,))
In [16]: a
Out[16]:
array([63, 19, 84, 89, 89, 76, 18, 16, 57, 65, 25, 31, 17, 20, 25, 14, 27,
70, 79, 87, 82, 59, 50, 86, 20, 42, 81, 58, 32, 23, 68, 12, 19, 98,
11, 90, 76, 55, 40, 66, 83, 64, 46, 65, 94, 64, 91, 89, 18, 44, 59,
52, 51, 22, 32, 94, 88, 38, 31, 91, 47, 76, 62, 43, 89, 41, 76, 81,
50, 53, 76, 97, 49, 91, 39, 81, 52, 94, 21, 77, 94, 96, 28, 57, 38,
10, 55, 57, 55, 41, 15, 14, 91, 69, 80, 43, 83, 31, 21, 76])
In [17]: a != 15
Out[17]:
array([ True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
False, True, True, True, True, True, True, True, True, True], dtype=bool)
然後你就可以使用這個bool
陣列,索引你的原數組,這將返回值放回原處索引陣列具有True
,這是Boolean array indexing
一部分。示例 -
In [18]: a[a != 15]
Out[18]:
array([63, 19, 84, 89, 89, 76, 18, 16, 57, 65, 25, 31, 17, 20, 25, 14, 27,
70, 79, 87, 82, 59, 50, 86, 20, 42, 81, 58, 32, 23, 68, 12, 19, 98,
11, 90, 76, 55, 40, 66, 83, 64, 46, 65, 94, 64, 91, 89, 18, 44, 59,
52, 51, 22, 32, 94, 88, 38, 31, 91, 47, 76, 62, 43, 89, 41, 76, 81,
50, 53, 76, 97, 49, 91, 39, 81, 52, 94, 21, 77, 94, 96, 28, 57, 38,
10, 55, 57, 55, 41, 14, 91, 69, 80, 43, 83, 31, 21, 76])
相關問題
- 1. 如何從numpy數組列表中刪除一個numpy數組?
- 2. 從NumPy數組中刪除值對
- 3. Python - 從numpy數組中刪除一行?
- 4. 從numpy的3d數組中刪除2d子數組
- 5. 從數組中永遠刪除數字
- 6. 迭代刪除numpy數組中的行
- 7. 在Numpy數組中刪除NaN和Infs
- 8. 在3D numpy數組中刪除行
- 9. Python在numpy數組中刪除行
- 10. 按數值從numpy數組中刪除元素
- 11. 從numpy結構數組中刪除列(數組中的元組列表)?
- 12. 從具有字符串值和數值的numpy數組中刪除NaN
- 13. 如何刪除numpy數組中所有numpy數組中的第n個元素?
- 14. 從Python中的Numpy數組中刪除零
- 15. 從PHP數組中刪除字符串?
- 16. 從字符數組中刪除條目
- 17. 從字節數組中刪除範圍
- 18. 從數組中刪除字符串項
- 19. 從字典數組中刪除值
- 20. Lodash從字符串數組中刪除
- 21. 從數組中刪除字符串
- 22. 如何從數組中刪除字符
- 23. 使用指針從字符數組[]中刪除/刪除字符
- 24. 在numpy數組的末尾刪除dtype
- 25. 爲numpy數組刪除一列
- 26. numpy刪除數組值(邏輯零)
- 27. 從數組中刪除數組項目
- 28. 如何從數組中刪除數組?
- 29. 數組函數從數組中刪除第一個字符
- 30. 如何從結構化numpy數組中刪除列?
難道你不能簡單地使用'a [a!=]'? –
是的,我可以做到這一點。它確保訂單得到保留嗎? – dineshdileep
是的,它應該以相同的順序返回元素。 –