2017-01-13 3 views
0

Ich arbeite an einem Projekt, bei dem wir zunächst die Daten filtern müssen, damit die ungültigen Daten entfernt werden. Dies bedeutet unter anderem, wenn eine der Zeilen in den Daten, die wir laden, Buchstaben/Wörter enthält, muss sie gelöscht werden. Reicht mein folgender Code aus?So entfernen Sie Zeilen, die Buchstaben oder Wörter enthalten

import numpy as np 
def dataLoad(filename): 
#The data is loaded and the variables are defined: 
    rawData=np.loadtxt('test.txt') 
    rawTemperature, rawGrowthrate, rawBacteria=np.loadtxt('test.txt',unpack=True) 
    print("You have choosen to work with the file {:s}".format(filename)) 
    # Removeing unvalid data: 
    # Empty vector to save the invalid data in: 
    InvalidData=[] 
    # Vector with ones: 
    Erase=np.ones(len(rawData)) 

    # The loop looks trough every datapoint in the matrix: 
    for i in range(len(rawData)): 
     # The rows in the Data that contains invalid data is inserted in Invalid Data 
     # And the ones in I'th place is switched to a zeroes. 
     if rawTemperature[i]<10 or rawTemperature[i]>60 or rawTemperature[i]==(""): 
      InvalidData.insert(i,'In line %d invalid Temperature' % (i+1)) 
      Erase[i]=0 
     if rawGrowthrate[i]<0 or rawGrowthrate[i]==(""): 
      InvalidData.insert(i,'In line %d invalid Growth rate' % (i+1)) 
      Erase[i]=0 
     if rawBacteria[i]<0 or rawBacteria[i]>4 or rawBacteria[i]==(""): 
      InvalidData.insert(i,'In line %d invalid Bacteria' % (i+1))    
      Erase[i]=0 
+3

Haben Sie es getestet? Besteht es diese Tests? – jonrsharpe

+0

Was enthält test.txt? – Inconnu

Antwort

0

Ich verstehe nicht, wenn Sie die gesamte Zeile oder nur ein Zeichen, das aus einem Buchstaben und keine Zahl oder etwas

zu überprüfen, ob eine Reihe Buchstaben oder Wörter enthält, löschen Sie die verwenden können, regex[a-zA-Z]Regex to match only letters

https://docs.python.org/2/library/re.html

, wenn Sie einfach den Charakter löschen möchten, können Sie verwenden re.sub und Ersatzw te der Charakter mit einem leeren Raum ‚‘

import re 
s = "ExampleString123" 
replaced = re.sub('[a-zA-Z]', '', s) 
print replaced 

für ein numpy Beispiel siehe Numpy array Regex sub

wenn Sie die gesamte Zeile in der numpy Array löschen möchten, können Sie es wählen mit dem regex [a-zA-Z] (Selecting elements in numpy array using regular expressions) und dann löschen (deleting rows in numpy array)

Verwandte Themen