Alltså inget "-" mellan datum och tid utan ett mellanslag. Jag har försökt med att ändra på olika "delimeters" och "converters", mm med dåligt resultat. Ofta mycket mystiga grafer.
jo jag har tänkt på det men jag ville lära mig att hantera np.loadtext() sen är jag ganska envis ibland(alltid?)
Är det "sed" som du tycker är passande i detta fall?
Och du har provat att bara ändra formatet i datefunc?
Förstår inte exakt hur det fungerar men om du har en default delimiter så blir väl detta problem om du har samma inom datumet enligt ditt eget format. Går säkert att dela upp det i olika converters för datum och tid men annars kanske det funkar bara genom att ändra i datefunc.
Kan du inte bara läsa in en rad åt gången och modifiera den innan du tolkar den. Eftersom jag inte kan Python kan jag inte föreslå exakt hur men i C är det trivialt.
Om det kan vara blandat så får du nog först "preprocessa" strängen med t.ex. en regex så den ger en
konsekvent datumsträng som sedan kan parse:as av strptime
Ofta(alltid?) i python, numpy läser man in alla värden till en vektor eller matris som man laborer med. (Det tar tid när jag läser in 50000 värden). Men det går säkert att läsa in en rad i taget och ändra mellanslag till något annat. Kan även pröva med att ändra delimeter mellan mätvärden till tex ",". Alt skriva in "-" mellan datum och tid när jag fyller på datafilen. Men men när man använder andras datafiler måste man filtera(scripta) om de använder "space" konsekvent.
Jag har skrivit ett flertal program som behandlar numeriska data i C. Relativt tidigt insåg jag att livet blir bra mycket bekvämare om man hanterar både decimalkomma och decimalpunkt. Enkelt tillägg i programmen.
Oltronix skrev:jo jag har tänkt på det men jag ville lära mig att hantera np.loadtext() sen är jag ganska envis ibland(alltid?)
Är det "sed" som du tycker är passande i detta fall?
Sed gör jobbet. Jag brukar blanda eftersom jag inte är jättebra på sed. Föredrar onliners med perl och lämpligt regext.
Är det engångsjobb kan man göra search & replace i emacs eller liknande.
Men har du provat att ändra formatet i första funktionen?
numpy-dokumentationen om loadtxt skrev:This function aims to be a fast reader for simply formatted files. The genfromtxt function provides more sophisticated handling of, e.g., lines with missing values.
Har jag underligt strukturerad data i text så föredrar jag att parsa raderna själv och stoppa i np.array i efterhand. Och kom ihåg att om du inte alltid behöver hela intervallet för att utföra beräkningarna, ibland behöver man bara ett delintervall i taget, så tjänar du massor med tid på att läsa ett stycke och låta python cacha resten av filen medan du räknar (man måste göra rätt tunga beräkningar för att vara slöare än diskaccess).
Tja det ser som jag måste slå ihop mina första 2 kolummner med 'sed', 'regex' eller annat så att det går att konvertera till en float som datetime.strptime() kan tolka. Om jag inte nu kan få loadtxt() eller genfromtxt() att tolka 2 kolumner som 1. Att dela upp i datum och tid och använda tid som x-axeltick har jag försökt men inte heller lyckats med. Det blir mest underliga grafer. Men detta kan bero på att jag inte förstår hur xaxis.set_major_formatter(mdates.DateFormatter() och set_xticks() fungerar.
EDIT:
Nu fick jag till det utan 'sed', regx eller annan filterfunktion. Jag anropade 'genfromtxt' 2 ggr med olika 'delimiters'.
Klart att det sett snyggare ut med "converters={0,1: datefunc}" för att få med de två första kolummnera som en, men alla dydliga försök ger "syntax error"