見た目は簡単ですが、オンラインで質問の解決策を見つけることができませんでした。基本的に、CSVファイルに保存する2つの配列a
とb
があります。 2列になります。列名も追加したいと思います。以下のコードを使用して、配列を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')
列名を追加するにはどうすればよいですか? csvファイルを次のようにしたい
Name1 Name2
1 5
2 6
3 7
4 8
このオプションがsavetxt
関数にないのは奇妙です。 header
オプションは、最初のセルにコメントを貼り付けるだけなので、それを行います。ありがとう。
編集:配列
次のようにheader
オプションを使用します。
>>> import numpy
>>> a = numpy.array([[1,2],[3,4],[5,6]])
>>> numpy.savetxt("foo.csv", a, delimiter=',', header="A,B", comments="")
結果のファイルは次のようになります。
A,B
1.000000000000000000e+00,2.000000000000000000e+00
3.000000000000000000e+00,4.000000000000000000e+00
5.000000000000000000e+00,6.000000000000000000e+00
あなたは pandas パッケージでそれを簡単に行うことができます:
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)
savetxt
(およびloadtxt
)もファイルハンドルを取ることに注意してください。
したがって、より高度なヘッダーが必要な場合は、次のようにできます。
_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')
_
または、すでに述べたように、header=str(...)
引数を使用します。
あなたはこのようにすることができます:
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()
複数の派手な1D配列を列として保存するための解決策を見つけました:
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=',')