2015-09-04 65 views
0

因此,我有一個numpy元組數組,我想刪除第一個值小於0或第二個元素大於數字n的所有元組。
所以,如果n = 10,我們有這個數組:刪除滿足2個條件的2D numpy數組中的元組

[[-1, 5], [3, 11], [-4, 20]]

它將成爲這樣的:

[[]]

我猜我需要一個聰明的使用np.deletenp.where辦法?

在此先感謝。

回答

1

你可以使用邏輯索引來解決這個問題。我猜你的榜樣,你意味着

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

您可以使用類似以下內容:

>>> 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來表達你的病情。

相關問題