32

最初の行が文字列 (列名) で、残りの行が数値である CSV にデータを保存しています。これをnumpy配列に保存するにはどうすればよいですか? 私が見つけることができるのは、行ではなく列のデータ型を設定する方法だけです。

現在、計算を行うためにヘッダーをスキップしていますが、最終バージョンにはヘッダーが必要です。しかし、ヘッダーをそのままにしておくと、配列全体が文字列として設定され、計算が失敗します。

これは私が持っているものです:

 data = np.genfromtxt(path_to_csv, dtype=None, delimiter=',', skip_header=1) 
4

3 に答える 3

50

names=True関数で引数を使用すると、列名を保持できますnp.genfromtxt

 data = np.genfromtxt(path_to_csv, dtype=float, delimiter=',', names=True) 

dtype=floatデータを float に変換する に注意してください。これは、データ型を推測するようにdtype=None要求するを使用するよりも効率的です。np.genfromtxt

出力は構造化配列になり、個々の列に名前でアクセスできます。名前は最初の行から取得されます。いくつかの変更が発生する可能性があります。たとえば、列名のスペースが変更さ_れます。ドキュメントは、あなたが持つ可能性のあるほとんどの質問をカバーする必要があります.

于 2012-09-09T15:18:37.090 に答える
13

最終バージョンでヘッダーが必要だと言っている意味がわかりませんが、次のような文字列で列にアクセスする構造化配列を生成できます。

data = np.genfromtxt(path_to_csv, dtype=None, delimiter=',', names=True)

data['col1_name']data['col2_name']などで列にアクセスします。

于 2012-09-09T08:20:31.130 に答える
3

numpy配列の全体的な考え方は、すべての要素が同じタイプであるということです。ヘッダーをPythonリストに読み込み、番号とは別に管理します。構造化配列(レコードの配列)を作成することもできます。この場合、ヘッダーを使用してレコード内のフィールドに名前を付けることができます。その場合、それらを配列に格納することは冗長になります。

于 2012-09-09T03:17:19.713 に答える