Python - 在NumPy数组中选择满足多个条件的行

时间:2017-01-27 15:55:44

标签: python arrays python-2.7 numpy

我的程序包含许多不同的NumPy数组,每个数组中都有各种数据。数组的一个示例是:

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

从单独的数组中,我可以检索TypeInput的值。然后我需要说

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])

此处,它在“InstanceName”列中查找数组(InstInv_Data),并找到与Instrument_Type的匹配项。然后,它将“TypeID”列分配给InstType_ID。我基本上想要添加一个and语句,以便它在另一列中查找另一个匹配的数据。

编辑:我只是想我可以尝试在两个单独的步骤中执行此操作。返回Input所在的CountsType-Column = Type列。但是,我不确定如何实际返回两列,而不是特定的一列。像这样:

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

1 个答案:

答案 0 :(得分:5)

您可以使用a & b为两个布尔数组ab执行逐元素AND:

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

同样,对于OR使用a | b,对于NOT使用~a