2016-08-07 17 views
-3

Die Arrays sind als untenIch brauche 3-Arrays in eine Textdatei zu schreiben, in Spalten

array1=np.array([1.5397e-05,8.7383e+00,2.6633e+01,1.1309e+03,4.3194e+02,2.5086e+01]) 
array2=np.array([4.83,1.4,0.4,-7.2,-3.64,0.6]) 
array3=([‘Sun’,’Sirius’,’Arcuturus’,’Betelgeuse’,’Polaris’,’Vega’]) 

ich die Daten wie die folgenden Informationen in einer Textdatei namens star.txt aussehen möchten.

Sun   1.5397e-05 4.83 
Sirius  8.7383e+00 1.4 
Arcuturus 2.6633e+01 0.4 
Betelgeuse 1.1309e+03 -7.2 
Polaris  4.3194e+02 -3.64 
Vega  2.5086e+01 0.6 

Kann mir bitte jemand helfen?

+0

Schauen Sie sich die integrierte 'zip'-Funktion https://docs.python.org an /3/library/functions.html#zip – cdarke

+1

Es sieht so aus, als ob Sie möchten, dass wir etwas Code für Sie schreiben. Während viele Benutzer bereit sind, Code für einen in Not geratenen Coder zu produzieren, helfen sie normalerweise nur, wenn das Poster bereits versucht hat, das Problem selbst zu lösen. Eine gute Möglichkeit, diesen Aufwand zu demonstrieren, besteht darin, den Code, den Sie bisher geschrieben haben, die Beispieleingabe (falls vorhanden), die erwartete Ausgabe und die Ausgabe, die Sie tatsächlich erhalten (Ausgabe, Rückverfolgung usw.), einzubeziehen. Je mehr Details Sie angeben, desto mehr Antworten erhalten Sie wahrscheinlich. Überprüfen Sie die [FAQ] (http://stackoverflow.com/tour) und [Wie zu fragen] (http://stackoverflow.com/questions/how-to-ask). – TigerhawkT3

+1

Vielleicht hilft Ihnen das beim Einstieg: http://stackoverflow.com/questions/16621351/how-to-use-python-numpy-savetxt-to-write-strings-and-float-number-to-an-ascii -fi – pathoren

Antwort

0

nimmt diese wie ist?

import numpy as np 

array1=np.array([1.5397e-05,8.7383e+00,2.6633e+01,1.1309e+03,4.3194e+02,2.5086e+01]) 
array2=np.array([4.83,1.4,0.4,-7.2,-3.64,0.6]) 
array3 = ['Sun','Sirius','Arcuturus','Betelgeuse','Polaris','Vega'] 

with open('star.txt', 'w') as f: 
    for a, b, name in zip(array1, array2, array3): 
     f.write('{0:15}{1:15}{2:15}\n'.format(name, a, b)) 

Ausgabe

Datei star.txt in demselben Ordner mit dem folgenden Inhalt:

Sun     1.5397e-05   4.83 
Sirius     8.7383   1.4 
Arcuturus    26.633   0.4 
Betelgeuse    1130.9   -7.2 
Polaris     431.94   -3.64 
Vega     25.086   0.6 

Für das Protokoll, es wäre schön, wenn Sie mehr beschreibenden Variablennamen als array1, array2, usw., so dass ich aussagekräftigere Variablennamen verwenden könnte als a, b usw.

+0

Vielen Dank, das half mir wirklich leid, dass ich vergessen habe, Code aufzulisten, den ich bereits ausprobiert habe. –

0

Es ist so einfach, es kaum zu erwähnen, dass Sie wirklich in der Lage sein sollten, dies selbst auszuarbeiten. Ich schlage vor, Sie folgen einem grundlegenden Python-Tutorial, es gibt viele im Web.

gibt es mehrere Lösungen, hier ist mein:

import numpy as np 

array1=np.array([1.5397e-05,8.7383e+00,2.6633e+01,1.1309e+03,4.3194e+02,2.5086e+01]) 
array2=np.array([4.83, 1.4, 0.4, -7.2, -3.64, 0.6]) 
array3=(['Sun','Sirius','Arcuturus','Betelgeuse','Polaris','Vega']) 

with open('star.txt', 'w') as fh: 
    for a,b,c in zip(array1, array2, array3): 
     print("%-10s %e %05.2f" % (c, a, b), file = fh) 

Das Python 3.

2

Haftungsausschluss: sobald Sie bereits NumPy mit i vektorisiert Ansatz verwenden würde, dh (keine Schleifen, verwenden NumPy oder des Pandas Macht es für Sie zu tun)

Sie np.savetxt() Funktion können Sie als @pathoren in erwähnt Kommentar:

np.savetxt('c:/temp/out.csv', np.array([array3, array1, array2]).T, delimiter='\t', fmt="%s") 

oder mit Pandas Modul:

import pandas as pd 

pd.DataFrame({'col1':array3,'col2':array1,'col3':array2}).to_csv('c:/temp/out.csv', index=False, header=None, sep='\t') 

HINWEIS: ich würde Sie nicht empfehlen, Raum/TAB getrennten Text zu verwenden, da es Probleme in futur verursachen könnte e (zum Beispiel, wenn Sie diese Datei lesen/analysieren müssen und wenn Sie Sterne haben, die mehrere Wörter in ihren Namen haben)

+0

Vielen Dank.Ich hatte verschiedene Varianten von np.savetxt ausprobiert und pd.dataframe benutzt, konnte aber nur scheinbar die Datei falsch herum mit dem array3 in der Mitte erscheinen lassen, nicht am Anfang. –