2016-09-20 3 views
1

Ich habe eine numpy Array von Folowing StrukturNumpy löschen mehrere Zeilen Kriterien übereinstimmen

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

der 6. Spalte 'PercentCnt' die mit Namen zugegriffen werden kann 'PercentCnt' enthält Zahlen von 0 bis 50 die 7. Spalte 'ModelType' Zahlen enthält 0 zu 5, also muss ich Reihen entfernen oder löschen, die diesen Kriterien 'PercentCnt'<50 und 'ModelType'<2 entsprechen.

Antwort

1

Sie können alle Zeilen finden, die Ihren Kriterien entsprechen, indem Sie einen spaltenweisen Vergleich für PercentCnt und ModelType und die Verbindung mit np.logical_and verwenden. Dabei kopierst du eigentlich alle anderen Zeilen, anstatt diejenigen zu löschen, die du loswerden willst, aber der Effekt ist der gleiche.

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

Die Bedingung

sb['PercentCnt'] >= 50 

ist die Bedingung für Dinge auf dieser Spalte zu halten, und die Bedingung

sb['ModelType'] >= 2 

das gleiche für die andere Säule ist.

Sie können diese mit np.logical_and kombinieren:

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

Schließlich halten nur die Zeilen, die Sie behalten möchten:

sb[keep] 
Verwandte Themen