2017-01-03 15 views
0

私はいくつかのリストにユニコードデータファイルを読み込もうとしています。numpy配列に空白がありません

Է 1335 1.1 
դ 1380 1.2 
    32 1.3 
ն 1398 1.4 
ե 1381 1.5 
ր 1408 1.6 

私はこの質問numpy.genfromtxtに応じnumpy genfromtxtでファイルを読んでいます:

decodef = lambda x: x.decode("utf-8") 
arr = np.genfromtxt("./data_files/data", delimiter="\t", dtype="U1, i4, f8", converters={0: decodef}) 

これは私numpy.ndarray含有していないスペースを与え、私はこのフォーマットの混在ユニコード/整数/浮動小数点データ・ファイルを持っています私はすでにとスペースの問題を解決しようとした

('Է', 1335, 1.1) 
('դ', 1380, 1.2) 
('', 32, 1.3) 
('ն', 1398, 1.4) 
('ե', 1381, 1.5) 
('ր', 1408, 1.6) 

:最初の列にスペースのため、しかし、空の要素、missing_values=" "replace_space='_'のパラメータを使用できますが、空白の項目を含む同じ配列をスペースに使用します。私はこのすべてのパラメータがデリミタの操作だけを意図していると思いますか?

これを解決する方法はありますか?

Pythonバージョン3.4.5が使用されています。

+0

問題は何ですか?これは構造化された配列です。 3番目のレコードの空の文字列? dtypeを指定すると、配列の表示は正常に見えます。 – hpaulj

+0

はい、3番目のレコードの空の文字列です。他のシンボルについては、すべてが期待通りに機能します。明確にするためにその部分を編集しました。 ) –

+0

一部のパラメータは値ではなくフィールド名に適用されます。塗りつぶし値のパラメータはありますか? – hpaulj

答えて

1

genfromtxtメソッドは、どうにかして空白を削除します。

あなたは

decodef = lambda x: x.decode("utf-8") if x != '' else " " 
arr = np.genfromtxt("text", delimiter="\t", dtype="U1, i4, f8",converters={0: decodef}) 

を使用する場合、それは動作します。 私はまだ、しかし、なぜそれほど正確に理解していません。

+0

Hm。それは私のために働かなかった。 P.P.私はPython 3.4.5を使用しています。この特定の場合にこの問題はわかりません。 –

+0

実際に2.7を使用していましたが、3.4.5で動作しません^^ –

+0

明らかに(しかし最も醜い): decodef = lambda x:x.decode( "utf-8")if x.decode( "utf -8 ")!= '' else" " –

関連する問題