2016-09-20 1 views
1

J'ai un tableau numpy de la structure folowingNumpy supprimer plusieurs lignes critères correspondant à

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

La 6e colonne 'PercentCnt' accessible par son nom 'PercentCnt' contient des nombres de 0 à 50 la 7e colonne 'ModelType' contient des nombres de 0 à 5 donc j'ai besoin de supprimer ou supprimer les lignes de tableau qui correspondent à ces critères 'PercentCnt'<50 et 'ModelType'<2.

Répondre

1

Vous pouvez trouver toutes les lignes correspondant à vos critères en utilisant une comparaison par colonne pour PercentCnt et ModelType et la connexion en utilisant np.logical_and. En faisant cela, vous copiez toutes les autres lignes plutôt que de supprimer celles que vous vouliez supprimer, mais l'effet est le même.

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

La condition

sb['PercentCnt'] >= 50 

est la condition pour garder choses sur cette colonne, et l'état

sb['ModelType'] >= 2 

est la même pour l'autre colonne.

Vous pouvez combiner avec np.logical_and:

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

Enfin, il suffit de garder les lignes que vous souhaitez conserver:

sb[keep]