Python で NumPy 配列を CSV に書き込む

Manav Narula 2023年1月30日
  1. pandas DataFrame を使用して、NumPy 配列を CSV ファイルに保存する
  2. numpy.savetxt() 関数を使用して、NumPy 配列を CSV ファイルに保存する
  3. tofile() 関数を使用して、NumPy 配列を CSV ファイルに保存する
  4. ファイル処理方法を使用して、NumPy 配列を CSV ファイルに保存する
Python で NumPy 配列を CSV に書き込む

このチュートリアルでは、numpy 配列を CSV ファイルに保存する方法について説明します。

pandas DataFrame を使用して、NumPy 配列を CSV ファイルに保存する

この方法では、最初に配列を pandas DataFrame に保存してから、この DataFrame を CSV ファイルに変換します。

次のコードは、これを実現する方法を示しています。

import pandas as pd
import numpy as np

a = np.asarray([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
pd.DataFrame(a).to_csv("sample.csv")

pd.DataFrame 関数は配列を DataFrame に格納し、to_csv() 関数を使用して CSV ファイルにエクスポートするだけです。

numpy.savetxt() 関数を使用して、NumPy 配列を CSV ファイルに保存する

numpy モジュールの savetxt() 関数は、配列をテキストファイルに保存できます。ファイル形式、区切り文字、およびその他の多くの引数を指定して、目的の形式で最終結果を得ることができます。

次のコードでは、この関数を使用して配列を CSV ファイルに保存します。

import numpy as np

a = np.asarray([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

np.savetxt("sample.csv", a, delimiter=",")

tofile() 関数を使用して、NumPy 配列を CSV ファイルに保存する

tofile() 関数を使用すると、配列をテキストファイルまたはバイナリファイルに書き込むことができます。ただし、この方法には多くの欠点があります。これは、配列データをすばやく保存するための便利な関数のようなものです。すべてを 1 行に格納するため、情報の精度が失われるため、この方法は、データのアーカイブを目的としたファイルには適していません。これらの問題のいくつかは、速度とファイルサイズを犠牲にしてデータをテキストファイルとして出力することで克服できます。

次のコードは、この関数の使用法を示しています。

import numpy as np

a = np.asarray([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

a.tofile("sample.csv", sep=",")

ファイル処理方法を使用して、NumPy 配列を CSV ファイルに保存する

従来のファイル処理方法を使用できますが、そのような方法は配列の形状に応じて多くの変更が必要であり、大量のメモリを消費する可能性があるため、使用することはお勧めできません。

次のコードは、このメソッドの例を示しています。

a = np.asarray([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
csv_rows = ["{},{},{}".format(i, j, k) for i, j, k in a]
csv_text = "\n".join(csv_rows)

with open("sample.csv", "w") as f:
    f.write(csv_text)

配列を行のリストに解凍し、join() 関数を使用してこのリストを結合することにより、単一の文字列を返します。次に、この文字列を CSV ファイルに書き込みます。

著者: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

関連記事 - NumPy Array