2012-01-08 9 views
2

数値と文字列を同じnumpyの配列に入れたいと思います。しかし、私はまれに(複製が難しいが、時には)、数字から文字列への変換が10進数に逆変換できない値になるエラーに遭遇することがあります(つまり、 "9.8267567e"、 "9.8267567 e-5 ")。これはファイルを書き込んだ後に問題を引き起こしています。ここで私は(はるかに小さい規模ではないが)やっているものの例である:Pythonで数字の数字を制限する

import numpy as np 
x = np.array(.94749128494582) 
y = np.array(x, dtype='|S100') 

私の理解では、これが100個の文字列の文字を可能にしなければならないということですが、時々私は〜10後のカットオフを見ています。私が割り当てなければならない別のタイプ、または配列(x)の文字数を制限する方法がありますか?

+0

なぜ文字列配列を使用していますか?また、同じ配列に文字列と浮動小数点数を入れたい場合、 'numpy'はあなたが望むものではありません。あなたはオブジェクト配列を通してそれを行うことができますが、numpyの全体的なポイントであるメモリ効率を失います...なぜリストを使用するだけではないのですか? –

答えて

1

まず、x = np.array(.94749128494582)は、np.arrayに渡された引数が配列インターフェイスで何らかの種類のものである必要があるため、あなたの考えを行っていない可能性があります。おそらく、あなたはx = np.array([.94749128494582])を意味しましたか?ジョーは彼のコメントで述べたように

さて、適切に文字列を保存するためとして、あなたはそれが非常にnumpythonicではありません。しかし、

y = np.array(x, dtype=object) 

を使用することによって、これを解決する可能性があり、あなたにも、昔ながらのpythonを使用している可能性がありリスト。

文字列と数値を同じ配列に保持する必要がある理由を注意深く検討することをお勧めします。不適切なデータ構造が設定されている可能性があり、再設計/リファクタリングのメリットがあるようです。 numpy配列は高速数値演算用ですが、文字列操作やある種のストレージ/データベースとして使用するのには適していません。

関連する問題