我有一个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
的数组行。
答案 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)
通过使用PercentCnt
和ModelType
的列式比较以及使用np.logical_and
的连接,您可以找到符合条件的所有行。这样做,你实际上复制了所有其他行,而不是删除你想要删除的行,但效果是一样的。
sb = sb[np.logical_and(sb["PercentCnt"]>=50, sb["ModelType"]>=2)]