39

csv ファイルを読み込もうとしていますnumpy.genfromtxtが、一部のフィールドはコンマを含む文字列です。文字列は引用符で囲まれていますが、numpy は引用符を単一の文字列として定義していると認識していません。たとえば、「t.csv」のデータを使用すると、次のようになります。

2012, "Louisville KY", 3.5
2011, "Lexington, KY", 4.0

コード

np.genfromtxt('t.csv', delimiter=',')

エラーが発生します:

ValueError: いくつかのエラーが検出されました! 行番号 2 (3 列ではなく 4 列になりました)

私が探しているデータ構造は次のとおりです。

array([['2012', 'Louisville KY', '3.5'],
       ['2011', 'Lexington, KY', '4.0']], 
      dtype='|S13')

ドキュメントを見ると、これに対処するオプションがありません。numpyでそれを行う方法はありますか、それともcsvモジュールでデータを読み込んでnumpy配列に変換するだけですか?

4

5 に答える 5

14

追加のコンマの問題は、それnp.genfromtxtを処理しません。

csv.reader()簡単な解決策の 1 つは、Python のcsvモジュールからファイルを読み取り、必要に応じて numpy 配列にダンプすることです。

本当に を使用したい場合はnp.genfromtxt、ファイルの代わりにイテレータを使用できることに注意してくださいnp.genfromtxt(my_iterator, ...)。したがって、 acsv.readerをイテレータでラップして に渡すことができnp.genfromtxtます。

それは次のようになります。

import csv
import numpy as np

np.genfromtxt(("\t".join(i) for i in csv.reader(open('myfile.csv'))), delimiter="\t")

これは基本的に、適切なコンマのみをオンザフライでタブに置き換えます。

于 2013-07-29T20:18:04.053 に答える