2014-09-25 102 views
-4

我有兩個陣列具有相同數量的元件條件對numpy的陣列

X = [1,2,3,4,5,6,7,8,9] 
Y = [10,4,3,7,7,3,1,8,98] 

的我想保留的X和Y的這樣的元素作爲2<X<7。我能怎麼做?

確定它

Y = Y[np.logical_and(X>2, X<5)] 
X = X[np.logical_and(X>2, X<5)] 

非常感謝效果很好!

+0

嘗試使用過濾器?你所展示的只是列表。 – 2014-09-25 09:17:50

+0

是的抱歉,它是一個簡單的Python列表,但如果解決方案與numpy更簡單,我可以使用numpy數組。只有一個條件很容易。我可以使用X = X [X> 2]。我認爲另一種類似的方法可能有兩個值 – Fabien 2014-09-25 09:21:22

回答

1

您可以使用numpy.logical_and

>>> X = np.array([1,2,3,4,5,6,7,8,9]) 
>>> X[np.logical_and(X>2, X<7)] 
array([3, 4, 5, 6]) 
+0

或者按鍵較少:'X [(X> 2 )&(X <7)]。 – jme 2014-10-22 14:30:20

1

,你可以使用一個循環和if,也可以使用set()爲保持輸精管指標:

>>> X = [1,2,3,4,5,6,7,8,9] 
>>> Y = [10,4,3,7,7,3,1,8,98] 
>>> X=[i for i in X if 2<i<7] 
>>> Y=[i for i in Y if 2<i<7] 
>>> X 
[3, 4, 5, 6] 
>>> Y 
[4, 3, 3] 
>>> set(Y) 
set([3, 4]) 
+0

如果我使用這種方法,我不再有每個數組中相同數量的元素。實際上,我只想顯示一個X,Y圖的選定區域(在X中) – Fabien 2014-09-25 09:30:05

+0

你不是被迫使用'set'? ? – Kasramvd 2014-09-25 09:31:21

+0

我想保留相應的索引。如果您查看滿足X條件的第一個索引,則它爲3,Y上的相應數字也爲3,但使用此方法後,過濾後的情況並非如此 – Fabien 2014-09-25 09:39:48