因此,我有一個numpy元組數組,我想刪除第一個值小於0或第二個元素大於數字n的所有元組。
所以,如果n = 10,我們有這個數組:刪除滿足2個條件的2D numpy數組中的元組
[[-1, 5], [3, 11], [-4, 20]]
它將成爲這樣的:
[[]]
我猜我需要一個聰明的使用np.delete
和np.where
辦法?
在此先感謝。
因此,我有一個numpy元組數組,我想刪除第一個值小於0或第二個元素大於數字n的所有元組。
所以,如果n = 10,我們有這個數組:刪除滿足2個條件的2D numpy數組中的元組
[[-1, 5], [3, 11], [-4, 20]]
它將成爲這樣的:
[[]]
我猜我需要一個聰明的使用np.delete
和np.where
辦法?
在此先感謝。
你可以使用邏輯索引來解決這個問題。我猜你的榜樣,你意味着
[[-1, 5], [3, 11], [-4, 20]]
將成爲
[]
既然你說的條件是:
我想刪除所有的元組第一個值小於0或第二個元素是大於,n。
>>> import numpy as np
>>> arr = np.array([[-1, 5], [3, 11], [-4, 20]])
>>> arr[~((arr[:,0] < 0) | (arr[:,1] > 10))]
array([], shape=(0, 2), dtype=int64)
基本上它的一切歸因於表達自己的組合邏輯要求(通過|
和&
)不同的邏輯口罩。
~
取反面具,因爲你說你想刪除符合你的標準的元素。這種方法工作的一個更好的例子是:
>>> import numpy as np
>>> arr = np.array([[-1, 5], [1, 1], [3, 11], [-4, 20], [2, 9]])
>>> arr[~((arr[:,0] < 0) | (arr[:,1] > 10))]
array([[1, 1], [2, 9]])
您可以使用類似以下內容:
>>> import numpy as np
>>> A = np.array([[-1, 5], [3, 11], [-4, 20]])
>>> mask = (A[:,0]>0) & (A[:,1] > 10)
>>> A[mask]
array([[ 3, 11]])
的想法是使用表達式,如mask
來表達你的病情。