Aussi simple que cela puisse paraître, je n'ai trouvé aucune solution à ma question en ligne. Fondamentalement, j'ai deux tableaux a
et b
que je veux enregistrer dans un fichier csv. Ce sera deux colonnes. Je veux également ajouter les noms des colonnes. Ci-dessous le code que j'utilise pour vider les tableaux vers un csv.
from np import array, savetxt
a = array([1,2,3,4])
b = array([5,6,7,8])
savetxt('submission2.csv', Zip(a,b), delimiter=',', fmt='%f')
Comment ajouter des noms de colonne? J'aimerais que le fichier csv ressemble à
Name1 Name2
1 5
2 6
3 7
4 8
Il est si étrange que cette option ne soit pas dans la fonction savetxt
. L'option header
le fait car elle ne fait que coller un commentaire dans la première cellule. Merci.
Modifier: tableaux
Utilisez l'option header
, comme ceci:
>>> import numpy
>>> a = numpy.array([[1,2],[3,4],[5,6]])
>>> numpy.savetxt("foo.csv", a, delimiter=',', header="A,B", comments="")
Le fichier résultant ressemble à ceci:
A,B
1.000000000000000000e+00,2.000000000000000000e+00
3.000000000000000000e+00,4.000000000000000000e+00
5.000000000000000000e+00,6.000000000000000000e+00
Vous pouvez le faire avec pandas package facilement:
import pandas as pd
import numpy as np
a = np.array([1,2,3,4])
b = np.array([5,6,7,8])
df = pd.DataFrame({"name1" : a, "name2" : b})
df.to_csv("submission2.csv", index=False)
Notez que savetxt
(et loadtxt
) accepte également les descripteurs de fichiers.
Par conséquent, si vous voulez un en-tête plus avancé, vous pouvez le faire:
a = array([1,2,3,4])
b = array([5,6,7,8])
with open('submission2.csv','w') as f:
f.write('# This is a very complex header\n')
f.write('A,B\n')
savetxt(f, Zip(a,b), delimiter=',', fmt='%f')
Ou, comme cela a déjà été noté, utilisez l'argument header=str(...)
.
vous pouvez faire comme ça:
import np import array, savetxt
a = array([1,2,3,4])
b = array([5,6,7,8])
f = open("submission2.csv", "w")
f.write("{},{}\n".format("Name1", "Name2"))
for x in Zip(a, b):
f.write("{},{}\n".format(x[0], x[1]))
f.close()
J'ai trouvé une solution pour enregistrer plusieurs tableaux numpy 1D sous forme de colonnes:
import numpy as np
data = []
for i in single_np_arrays:
data.append(i)
data = np.array(data).T #transpose the array to have proper columns
np.savetxt('columns_from_np_arrays.csv',data,delimiter=',')