Numpy删除符合条件的多行

时间:2016-09-20 08:02:33

标签: python numpy

我有一个numpy数组的结构

sb = np.genfromtxt(open('HomePage/TodayList.txt', 'rb'),
                   delimiter=',', skiprows=0,
                   dtype=[('DataBase', np.str_, 16), ('Mode', np.str_, 16),
                          ('SMB', np.str_, 16),('Desc', np.str_, 128), 
                          ('Res', np.str_, 16), ('RightCnt', np.float64), 
                          ('PercentCnt', np.float64), ('ModelType', np.float64)])

可以通过名称'PercentCnt'访问的第6列'PercentCnt'包含0到50之间的数字 第7列'ModelType'包含0到5之间的数字,因此我需要删除或删除符合这些条件'PercentCnt'<50'ModelType'<2的数组行。

2 个答案:

答案 0 :(得分:2)

条件

sb['PercentCnt'] >= 50

在此列上保留事物和条件

的条件
sb['ModelType'] >= 2

与另一列相同。

您可以将这些与np.logical_and结合使用:

keep = np.logical_and(sb['PercentCnt'] >= 50, sb['ModelType'] >= 2)

最后,只需保留您希望保留的行:

sb[keep]

答案 1 :(得分:1)

通过使用PercentCntModelType的列式比较以及使用np.logical_and的连接,您可以找到符合条件的所有行。这样做,你实际上复制了所有其他行,而不是删除你想要删除的行,但效果是一样的。

sb = sb[np.logical_and(sb["PercentCnt"]>=50, sb["ModelType"]>=2)]