2014-09-25 76 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