最初の行が文字列(列名)で、残りの行が数字であるCSVにデータが保存されています。これをnumpy配列に保存するにはどうすればよいですか?私が見つけることができるのは、列ではなく行ではなくデータ型を設定する方法です。
現在、計算を行うためにヘッダーをスキップしていますが、最終バージョンにはヘッダーが必要です。ただし、ヘッダーをそのままにすると、配列全体が文字列として設定され、計算が失敗します。
これは私が持っているものです:
data = np.genfromtxt(path_to_csv, dtype=None, delimiter=',', skip_header=1)
関数names=True
でnp.genfromtxt
引数を使用すると、列名を保持できます
data = np.genfromtxt(path_to_csv, dtype=float, delimiter=',', names=True)
データをフロートに変換するdtype=float
に注意してください。これは、dtype=None
を使用してデータ型を推測するnp.genfromtxt
を使用するよりも効率的です。
出力は構造化配列になり、名前で個々の列にアクセスできます。名前は最初の行から取得されます。いくつかの変更が発生する場合があります。たとえば、列名のスペースは_
に変更されます。 documentation は、あなたが持つことができるほとんどの質問をカバーするはずです。
最終バージョンでヘッダーが必要だと言ったときの意味がわかりませんが、次のような文字列で列にアクセスする構造化配列を生成できます。
data = np.genfromtxt(path_to_csv, dtype=None, delimiter=',', names=True)
そして、data['col1_name']
、data['col2_name']
などで列にアクセスします。
Numpy配列の全体的な考え方は、すべての要素が同じ型であるということです。ヘッダーをPythonリストに読み込み、数値とは別に管理します。構造化配列(レコードの配列)を作成することもできます。この場合、ヘッダーを使用してフィールドに名前を付けることができますその場合、レコードを配列に格納することは冗長になります。