2017-01-27 2 views
1

Моя программа содержит множество различных массивов NumPy с различными данными внутри каждого из них. Пример массива:Python - выберите строку в массиве NumPy, где выполняется несколько условий.

x = [5, 'ADC01', Input1, 25000], # Where [TypeID, Type, Input, Counts] 
    [5, 'ADC01', Input2, 40000] 

Из отдельных массивов можно получить значение Type и Input. то я должен сказать

Counts = x[0,3] where Type = 'ADC01' and Input = 'Input2'

Очевидно, что это не будет, как это писал. За время, что я только необходимы, чтобы удовлетворить одно условие, я использовал:

InstType_ID = int(InstInv_Data[InstInv_Data[:,glo.inv_InstanceName] == Instrument_Type_L][0,glo.inv_TypeID]) 

Здесь он выглядит в массиве (InstInv_Data) в столбце «INSTANCENAME» и находит соответствие с INSTRUMENT_TYPE. Затем он присваивает столбцу «TypeID» значение InstType_ID. Я в основном хочу добавить оператор and, чтобы он также искал другой соответствующий фрагмент данных в другом столбце.

Редактировать: Я просто подумал, что могу попытаться сделать это двумя разными шагами. Возвращаемые как Input, так и Counts столбцы, где Type-Column = Type. Однако я не уверен, как фактически вернуть два столбца вместо определенного. Что-то вроде этого:

Intermediate_Counts = (InstDef_Data[InstDef_Data[:,glo.i_Type] == Instrument_Type_L][0,(glo.i_Input, glo.i_Counts]) 

ответ

3

Вы можете использовать a & b для выполнения поэлементно И для двух логических массивов a, b:

selected_rows = x[(x[:,1] == 'ADC01') & (x[:,2] == 'Input2')] 

Аналогично, используйте a | b для OR и NOT для ~a.

+0

Спасибо, я попытался сделать что-то похожее на это, но я смутился тем, где положить скобки. Это здорово! –

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