np.Array in csv spaltenweise einfügen

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
incoggnito
User
Beiträge: 53
Registriert: Donnerstag 27. April 2017, 09:28

Hallo Zusammen,

irgendwie finde ich nicht die richtige Syntax um zwei Vektoren in zwei Spalten einer csv einzufügen.
Zeilenweise stellt kein Problem dar!

Könnt ihr mir ein Codesample zeigen, wie ihr sowas macht?

Viele Grüße
Inco
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@incoggnito: zuerst mußt Du aus den Vektoren eine nx2-Matrix machen. Dann sollte das Speichern kein Problem sein.

Code: Alles auswählen

ab = np.hstack([a[:,None], b[:,None]])
incoggnito
User
Beiträge: 53
Registriert: Donnerstag 27. April 2017, 09:28

funzt leider nicht, die Tabelle in python passt, ... im csv wird alles in eine Spalte geschrieben.
Brauche ich dafür einen speziellen Delimiter?

Code: Alles auswählen

data= hstack([D[:,None],ef[:,None]])
savetxt(csvfile, data)
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

wie sehen denn D und ef aus?
incoggnito
User
Beiträge: 53
Registriert: Donnerstag 27. April 2017, 09:28

Aktuell so:

D --> float64 (1, )--> array(58.9....)
ef --> float64 (1, ) --> array(5159.6...)
incoggnito
User
Beiträge: 53
Registriert: Donnerstag 27. April 2017, 09:28

Hat sich erledigt:

Code: Alles auswählen

data= hstack([D[:,None],ef[:,None]])
savetxt(csvfile, data, fmt="%2.3f", delimiter=';', newline='\n')
Versteh zwar nicht, warum das im .txt mit dem Tabstopp nicht genauso funktioniert ... aber dann halt so.
incoggnito
User
Beiträge: 53
Registriert: Donnerstag 27. April 2017, 09:28

Etwas off Topic, aber wie schafft man es die Dezimaltrennzeichen durch Kommas zu ersetzen?
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

Computer nutzen die amerikanischen Notation, d.h. der Punkt trennt die Nachkommastellen ab. Bei Excel & Co kann man das halt über die lokalen Ländereinstellungen ändern. NumPy kann das AFAIK nicht, Pandas kann es wohl aber.

Du könntest auf die exportierte CSV Datei noch ein Skript loslassen, was die Punkte durch Kommas ersetzt. Oder, falls es um den Export in eine Tabellenkalkulation geht, der Tabellenkalkulation beim Import mitteilen, dass das Trennzeichen für die Nachkommastellen ein Punkt ist.

Gruß, noisefoor
incoggnito
User
Beiträge: 53
Registriert: Donnerstag 27. April 2017, 09:28

hallo,

wie macht man mit pandas ein .csv, dass statt den Punkten bei den Nachkommastellen Kommas ausgibt?

gruß inco
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

die Methode `to_csv' eines Dataframes kennt das (optional) Argument `decimal`, mit dem du das Trennzeichen festlegen kannst. Doku: http://pandas.pydata.org/pandas-docs/st ... o_csv.html

Gruß, noisefloor
incoggnito
User
Beiträge: 53
Registriert: Donnerstag 27. April 2017, 09:28

Hat so mit dem numpy.array geklappt:

Code: Alles auswählen

Array1=Matrix1[:,0]
Array2=Matrix2[:,0]

csvfile=path2result + name + '.csv'
Data= hstack([Array1[:,None],Array2[:,None]])
df = DataFrame(Data, columns=['Spaltenname1','Spaltenname2'])
df.to_csv(csvfile, index=False, sep=';', decimal=',',float_format='%.3f')
VG Inco
Antworten