Ich glaube die Methode das orginal Array zu transponieren ist ein gute Idee, ich kann so das Problem umgehen, dass ich nicht weiss wie viele Spalten es geben wird und über
Code: Alles auswählen
data_shuffled = [numpy.random.permutation(row) for row in data]
Das gleiche geht über
Code: Alles auswählen
for i in range(x):
numpy.random.shuffle(data[i])
print data
Code: Alles auswählen
outfile = numpy.savetxt(infile + '_shuffled.dat', data_shuffled, fmt='%.2f')
Was in meiner Ursprungsdatei also Spalten waren sind nun Zeilen, das ist für die weitere Bearbeitung ungünstig.1.50 4.50 2.50 9.50 3.50 6.50 8.50 0.50 7.50 5.50
14.50 12.50 15.50 16.50 10.50 11.50 17.50 13.50 19.50 18.50
Ich finde leider keine Ausgabeoption für numpy.savetxt, die es mir erlaubt transponiert in die Datei zu schreiben (also sowas wie unpack für das lesen). Ich kann auch nicht .transpose() drauf anwenden, python beschwert sich dann, dass mein Objekt eine Liste ist, auf die ich transpose nicht anwenden kann:
Das liegt soweit ich das verstehe daran, dass ich im Beispiel mit 2 Spalten, 2 arrays erzeuge, die also eigentlich 2 Listen sind und daher nicht transponierbar.data_shuffled.transpose()
AttributeError: 'list' object has no attribute 'transpose'
Das ist wiederum kein Problem, wenn ich nicht unpack nehme und die Schleife oben mir numpy.random.shuffle ausführe.
Es gibt also 2 Möglichkeiten das Problem zu lösen:
1. Die Spalten der Ausgangsdatei zu zählen, damit ich den entsprechenden Wert in die for-Schleife schreiben kann.
2. Die beiden Listen die bei der unpack-Methode rauskommen irgendwie wieder Spalten zu verwandeln
Sorry das ich nerve, vielleicht habt ihr ja noch eine letzte Idee