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

Попробуйте фильтр? То, что вы показываете, - это просто списки. –

+0

Да, извините, это простой список python, но если решение проще с numpy, я могу использовать массив numpy. С одним условием это легко. Я могу использовать X = X [X> 2]. Я думал, что возможен еще один аналогичный способ с двумя значениями – Fabien

ответ

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

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) графика X, Y – Fabien

+0

, вы не вынуждены использовать 'set'? ? – Kasramvd

+0

Я хочу сохранить соответствующие индексы. Если вы посмотрите на первый индекс, который заполняет условие на X, он равен 3, то соответствующее число на Y равно 3, но с этим методом это не так после фильтрации – Fabien

Смежные вопросы