Numpy Array: eine Spalte von float zu int konvertieren

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
Alois
User
Beiträge: 16
Registriert: Dienstag 13. Dezember 2016, 14:45

Freitag 15. Juni 2018, 20:59

Hallo Community,

in nachfolgendem Skript müssen in der ersten Spalte vom Array C (bzw. C.csv) ganze Zahlen stehen.
Die erste Spalte wird aber jeweils mit einer Nachkommastelle (".0") ausgegeben.
Wie kann ich diese Spalte als ganze Zahl (Integer) ausgeben?

Danke für Eure Unterstützung.

Viele Grüße
Alois

Code: Alles auswählen

# -*- coding: utf-8 -*-
"""
Created on Fri Jun 15 21:44:17 2018

@author: dodi
"""

import csv
import numpy as np

Pfad_Ziel = "/home/dodi/data/Eigene_Dateien/python/Skripte/Test_Zusammenfuehren_CSV/"

A = np.array([[1,0.1],
              [2,0.2]])
B = np.array([[3,0.3],
              [4,0.4]])
              
C = np.concatenate((A, B), axis =0)
with open (Pfad_Ziel+ "C","w") as Ziel:
        writer = csv.writer(Ziel)
        nrow = 0
        for row in C:  
            writer.writerow(C [nrow,:])            
            nrow +=1
Ubuntu 14.04 / 16.04
Benutzeravatar
__blackjack__
User
Beiträge: 1040
Registriert: Samstag 2. Juni 2018, 10:21

Freitag 15. Juni 2018, 21:49

@Alois: Numpy kennt auch sogenannte „record arrays“, aber normale Numpy-Arrays nutzen es ja gerade als Vorteil das jedes Element vom gleichen Typ ist und die gleiche Menge an Speicherplatz belegt.

Pfade setzt man mit `os.path.join()` zusammen und nicht mit ``+``.

Warum schreibst Du selbst eine Schleife statt die Funktionen aus `numpy` zu verwenden um CSV-Daten zu schreiben?

Die ``for``-Schleife hat eine Laufvariable `row` die Du gar nicht verwendest. Was denkst Du denn was das ist? Vergleich das mal mit Deinem `C[nrow,:]`-Wert.
“Capitalism is the astounding belief that the most wickedest of men will do the most wickedest of things for the greatest good of everyone.” – John Maynard Keynes
Benutzeravatar
MagBen
User
Beiträge: 777
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

Sonntag 17. Juni 2018, 11:28

Mit numpy.savetxt
https://docs.scipy.org/doc/numpy-1.13.0 ... vetxt.html
kannst sehr bequem 2D-Arrays als Textdatei rausschreiben.
Wenn du den Parameter fmt (Format) richtig setzt, dann kommt auch eine CSV-Datei dabei heraus. Mit fmt kannst du auch die Formatierung für jede Spalte einzeln festlegen.
a fool with a tool is still a fool, www.magben.de, YouTube
Alois
User
Beiträge: 16
Registriert: Dienstag 13. Dezember 2016, 14:45

Sonntag 17. Juni 2018, 18:53

MagBen hat geschrieben:
Sonntag 17. Juni 2018, 11:28
Mit numpy.savetxt
https://docs.scipy.org/doc/numpy-1.13.0 ... vetxt.html
kannst sehr bequem 2D-Arrays als Textdatei rausschreiben.
Wenn du den Parameter fmt (Format) richtig setzt, dann kommt auch eine CSV-Datei dabei heraus. Mit fmt kannst du auch die Formatierung für jede Spalte einzeln festlegen.
das Leben kann so einfach sein ;)

Code: Alles auswählen

np.savetxt (Pfad_Ziel + file ,Array, fmt=['%i','%f'], delimiter = ',')
Danke, perfekt... funktioniert.

Viele Grüße
Alois
Ubuntu 14.04 / 16.04
Antworten