2016-04-25 10 views
-1

Ich versuche, aus Array zu lesen ich erstellt und Wert innerhalb Array zurückgegeben von der Spalte und Zeile, die es in gefunden. Das ist, was ich im Moment habe.Lesen und Rückgabe von Werten aus Array mit Bedingungen

import pandas as pd 
import os 
import re 

Dir = os.getcwd() 
Blks = [] 

for files in Dir: 
    for f in os.listdir(Dir): 
     if re.search('txt', f): 
      Blks = [each for each in os.listdir(Dir) if each.endswith('.txt')] 
print (Blks) 

for z in Blks: 
    df = pd.read_csv(z, sep=r'\s+', names=['x','y','z']) 
    a = []  
    a = df.pivot('y','x','z') 
    print (a) 

AUSGÄNGE:

x  300.00 300.25 300.50 300.75 301.00 301.25 301.50 301.75 
y                   
200.00  100  100  100  100  100  100  100  100 
200.25  100  100  100  100  110  100  100  100 
200.50  100  100  100  100  100  100  100  100 

x wird meine Spalten und die Zeilen y, innerhalb des Array-Werte ist es entsprechend benachbarten Spalte und Zeile sein. Wie Sie oben sehen können, gibt es einen ungeraden Wert von 110, der 10 über den anderen Werten liegt. Ich versuche, das Array zu lesen und den Wert x (Spalte) und y (Zeile) für den Wert 10 zurückzusetzen, indem ich seine Werte überprüfe daneben (oben, unten, rechts, links), um den Unterschied zu berechnen.

Hoffe jemand kann mich freundlicherweise in die richtige Richtung führen, und alle Anfänger Tipps werden geschätzt.wenn es unklar ist, was ich frage bitte ich habe keine jahrelange Erfahrung in allen Methoden, ich habe erst vor kurzem mit Python begonnen.

Antwort

0

Sie könnten DataFrame.ix verwenden, um alle Werte Zeile für Zeile und Spalte für Spalte durchzulaufen.

oddCoordinates=[] 

for r in df.shape[0]: 
    for c in df.shape[1]: 
     if checkDiffFromNeighbors(df,r,c): 
     oddCoordinates.append((r,c)) 

die Zeile und Spalte der Werte, die von den Nachbarn verschieden sind, in oddCoordinates aufgeführt.

die Differenz zwischen den Nachbarn zu überprüfen, man konnte sie Schleife und zählen, wie viele unterschiedliche Werte gibt es:

def checkDiffFromNeighbors(df,r,c): 
    #counter of how many different 
    diffCnt = 0 
    #loop over the neighbor rows 
    for dr in [-1,0,1]: 
     r1 = r+dr 
     #row should be a valid number 
     if r1>=0 and r1<df.shape[0]: 
     #loop over columns in row 
     for dc in [-1,0,1]: 
      #either row or column delta should be 0, because we do not allow diagonal 
      if dr==0 or dc==0: 
       c1 = c+dc 
       #check legal column 
       if c1>=0 and c1<df.shape[1]: 
        if df.ix[r,c]!=df.ix[r1,c1]: 
        diffCnt += 1 

    # if diffCnt==1 then a neighbor is (probably) the odd one 
    # otherwise this one is the odd one 
    # Note that you could be more strict and require all neighbors to be different 
    if diffCnt>1: 
     return True 
    else: 
     return False 
Verwandte Themen