2017-05-09 7 views
-1

[enter image description hier ][1] Ich habe ein Array, das ich aus der DateiUmstellen Array basierend auf Benutzer Wahl

example of which I have in my array

So etwas lesen wie in der Abbildung dargestellt.

  1. ich es in einer Reihenfolge angeordnet werden sollen, dass ich jedes Array platziert die geringste Anzahl in Index0 und größte Zahl in index2 überprüfen, werden die restlichen zwei Ziffern auf index2, index3;

  2. Also sollte dies auf alle Daten angewendet werden, die ich jemals aus der Datei gelesen habe. Bitte helfen Sie mir mit einer guten Antwort. Wenn ich es versuche, betrachtet es jede Zeile als einen Index. Ich weiß nicht, wie ich jedes Element in einer einzigen Reihe aufnehmen soll. Weil mein Plan darin bestand, basierend auf dem Platz am wenigsten Element in Index0 und am größten in Index1 zu sortieren, aber hier zeigt es, wie Index0 eine vollständige Zeile ist.

Zum Beispiel möchte ich eine Ausgabe wie diese

['0','1','0.42673399999999995', '0.76885199999999998'] 
['0.76885200000000031','2','0.87031900000000029','1'] 
['0.8703189999999994','3','1.3058599999999998','2'] 
+0

Erste Zeile, sollte es nicht 0 sein anstatt 0,42 für das erste Element, da 0 <0,42? – Nuageux

+0

Willkommen bei stackoverflow. Könnten Sie bitte einen Code für Ihr spezifisches Problem bereitstellen? Das beweist, wie weit du es versucht hast, und es wird anderen Mitgliedern helfen, dein Problem besser zu verstehen. Zu dem Zeitpunkt wirst du ihnen einen Kontext deines Problems geben. Bitte überprüfen Sie diese Links: https://stackoverflow.com/help/mcve und https://stackoverflow.com/help/how-to-ask –

Antwort

0

ich zuerst sortiert, dann das kleinste Element erhalten, das größte und den Rest hinter setzen. Also, auf der Grundlage Ihrer Daten:

import numpy 

a = [[0, 0.42673399999999995, 1, 0.76885199999999998], 
    [1, 0.76885200000000031, 2, 0.87031900000000029], 
    [2, 0.8703189999999994, 3, 1.3058599999999998]] 

a = numpy.sort(a, axis=1) 
a = numpy.hstack((a[:,0][:,None], a[:,-1][:,None], a[:,1:-1])) 

print a 

Ausgang:

[[ 0.  1.  0.426734 0.768852] 
[ 0.768852 2.  0.870319 1.  ] 
[ 0.870319 3.  1.30586 2.  ]] 

bearbeiten Version, die die CSV-Datei lautet:

import numpy 

a = [] 
filename = open("doc.csv") 
for line in filename.readlines(): 
    a.append(line.strip().split(",")) 
a = numpy.sort(a, axis=1) 
a = numpy.hstack((a[:,0][:,None], a[:,-1][:,None], a[:,1:-1])) 

print a 

Neue Ausgabe:

[['0' '1' '0.42673399999999995' '0.76885199999999998'] 
['0.76885200000000031' '2' '0.87031900000000029' '1'] 
['0.8703189999999994' '3' '1.3058599999999998' '2']] 

Bitte überprüfen Sie, ob Sie am Ende der CSV-Datei keine Leerzeile haben (falls Sie Ihre CSV-Datei ändern, aber nicht ändern können, kann dies durch Hinzufügen einer Bedingung vor a.append(...) behoben werden)

+0

Ich bekomme diese Fehler-a.sort (Achse, Art, Reihenfolge) ValueError: Achse (= 1) außerhalb der Grenzen – sana

+0

@sana Können Sie das genaue Format von ** a ** in Ihrer Frage angeben? Ich denke, wir haben nicht das exakt gleiche Format – Nuageux

+0

Danke für Ihre Antwort. Aber ändert es die geringste Anzahl an Index0 und die größte Anzahl an Index1 für welches Array ich auch als Datei lese? – sana

Verwandte Themen