Einzelne Zeile per loadtxt oder genfromtxt einlesen
Verfasst: Freitag 6. Januar 2017, 14:56
Hallo zusammen,
ich habe als output eines Simulationstools (NREL FAST) eine txt mit ~100 Spalten und ~90k Zeilen als output. Darin enthalten sind einfache Zahlenwerte. Ich kann erfolgreich die Tabelle mittels numpy loadtxt einlesen (skiprows=8 um den Header auszulassen) und auch die Spalten beliebig gegeneinander plotten (1. Spalte ist die Zeit, die anderen, sind verschiedene Kräfte, Verschiebungen, etc.).
Das Problem ist aber, dass sich die Reihenfolge der Spalten je nach Konfiguration im Simulationsprogramm ändern kann.
In Zeile 7 der txt stehen die Bezeichnungen der einzelnen Spalten. Ich würde nun gerne mein Plot-Script so ergänzen, dass der Plot-Befehl in Abhängigkeit der Variablen in Zeile 7 ausgeführt wird.
Angenommen in Spalte 0 steht die Variable "Zeit", in Spalte 37 die variable "X-Force" dann möchte ich gerne, dass das Script die Zeile 7 der txt nach "X-Force" durchsucht und in Abhängigkeit davon die jeweilige Spalte gegen die Spalte "Zeit" plottet.
Dazu müsste ich aber glaube ich extra nochmal die Spalte 7 einlesen, nach "X-Force" suchen und den entsprechenden Spaltenwert ermitteln lassen. Die ersten Spalten könnte ich in genfromtxt per und alles nach Zeile 7 per überspringen. Da sich die Anzahl der Zeilen aber ständig ändert funktioniert das leider auch nicht.
Für Hilfe wäre ich hier dankbar.
ich habe als output eines Simulationstools (NREL FAST) eine txt mit ~100 Spalten und ~90k Zeilen als output. Darin enthalten sind einfache Zahlenwerte. Ich kann erfolgreich die Tabelle mittels numpy loadtxt einlesen (skiprows=8 um den Header auszulassen) und auch die Spalten beliebig gegeneinander plotten (1. Spalte ist die Zeit, die anderen, sind verschiedene Kräfte, Verschiebungen, etc.).
Code: Alles auswählen
import numpy as np
import matplotlib.pyplot as plt
a=np.loadtxt('test.txt', skiprows=8)
fig, ax = plt.subplots() # start new figure to plot in
ax.plot(a[:,0],a[:,36]) # Plot TwrBsFxt
ax.grid(True) # Switch Grid
plt.ylabel('Force at tower base in x-direction in kN')
plt.xlabel('Time in s')
plt.tight_layout() # Tight layout, minimal borders
plt.savefig('TwrBsFxt.eps', format='eps', dpi=1000)
plt.savefig('TwrBsFxt.png', format='png', dpi=1000)
In Zeile 7 der txt stehen die Bezeichnungen der einzelnen Spalten. Ich würde nun gerne mein Plot-Script so ergänzen, dass der Plot-Befehl in Abhängigkeit der Variablen in Zeile 7 ausgeführt wird.
Angenommen in Spalte 0 steht die Variable "Zeit", in Spalte 37 die variable "X-Force" dann möchte ich gerne, dass das Script die Zeile 7 der txt nach "X-Force" durchsucht und in Abhängigkeit davon die jeweilige Spalte gegen die Spalte "Zeit" plottet.
Dazu müsste ich aber glaube ich extra nochmal die Spalte 7 einlesen, nach "X-Force" suchen und den entsprechenden Spaltenwert ermitteln lassen. Die ersten Spalten könnte ich in genfromtxt per
Code: Alles auswählen
skip_headerCode: Alles auswählen
skip_footerFür Hilfe wäre ich hier dankbar.