Выбор значений из массива с учетом условия

#python #numpy #logic

#python #numpy #Логические

Вопрос:

У меня есть ряд X, содержащий N значений. Я хотел бы выбрать значения X с учетом условия X [i] > V. Я бы подумал, что что-то вроде:

 Y = X[(X[:] > V)]
  

Будет работать. На данный момент я получаю набор null, хотя я знаю, что подмножество значений в X удовлетворяет этому условию.

Я пишу это неправильно?

Комментарии:

1. Почему вы используете X[:] > V вместо просто X > V ?

2. Вы говорите «серия», но этот вопрос помечен numpy . Что это? (хотя в данном случае это не должно иметь значения)

3. Спасибо всем, я понял это. Кстати, имел в виду pandas.

Ответ №1:

Приведенный вами код верен, если вы хотите сравнить каждый из них X[i] с каждым V[i] . УВЕДОМЛЕНИЕ

 >>> import numpy as np
>>> x = np.array(range(5))
>>> v = np.array([3]*5)
>>> x[x > v]
array([4])
  

Если оригинал — это то, что вы действительно хотели, повторно проверьте свой x и v . Обратите внимание, что вам не нужно добавлять пустое понимание [:] к x, хотя это не изменит результат. Кажется, что вы хотите (утверждая, что это не работает), все ли x больше, чем любой элемент V? Если это так, возьмите минимальное значение v и выполните ту же маску

 x[x > np.min(v)]
  

Комментарии:

1. Что вы имеете в виду Y[i] . Это серия, которую он назначает

2. Он где-нибудь говорит, что V такое? Это может быть скаляр, это не обязательно должен быть другой массив.

3. хороший момент — это было предположение, учитывая утверждение о том, что оно работает не так, как задумано OP