Numpy: dtype = Noneの場合、genfromtxtは解凍されません

作成日 2014年02月21日  ·  6コメント  ·  ソース: numpy/numpy

これがバグなのか機能なのかはわかりませんが、私が使用する場合:

f_data = np.genfromtxt('file.dat', dtype=None, unpack=True)

ここで、 file.datは、複数の列を持つ標準データファイル(例:http://pastebin.com/ihEW2dxS)であり、 unpack=Trueを設定した場合とは異なり、結果は転置されません。

たとえば、行f_data = np.loadtxt('file.dat', unpack=True)は期待どおりに機能します。

00 - Bug numpy.lib good first issue

最も参考になるコメント

私もこれを経験します。 loadtxtはもう少し賢いです:

if unpack:
        if len(dtype_types) > 1:
            # For structured arrays, return an array for each field.
            return [X[field] for field in dtype.names]
        else:
            return X.T

genfromtxtがこれを行わないのはなぜですか?

全てのコメント6件

バグのように見えますが、別の方法で通知されるまでそのようにマークします。

これを少し調べました。

@ Gabriel-pのコードの結果は、形状(12、)のフレックス配列です。 コードはそれにoutput.Tを呼び出しますが、それは1次元であるため、これは何もしません。

dtype=None指定する最大の問題は、それがフレックス配列になることです。 各列には、個別の推定タイプがあります。 この結果を本当に転置する場合は、各行に個別のタイプが必要になります。 AFAIK、それを行う唯一の方法は、同種の配列のリストまたはタプルを用意することです。

テキストファイルのnumCols << numRowsなので、リストまたはタプルを使用することは大したことではありません。 そのように実装すると、ドキュメントで指定されているようにx, y, z = np.genfromtxt(...)解凍され、@ Gabriel-pのケースが解決されます。

ただし、 genfromtxtはすでに600行を超えています。 何かご意見は?

これにも噛まれたばかりです。 テストケースを作成しました。を参照してください。

https://github.com/hsgg/numpy.git

私もこれを経験します。 loadtxtはもう少し賢いです:

if unpack:
        if len(dtype_types) > 1:
            # For structured arrays, return an array for each field.
            return [X[field] for field in dtype.names]
        else:
            return X.T

genfromtxtがこれを行わないのはなぜですか?

この問題に関する更新はありますか? 2014年から変わっていないようです。

数年前に行われた@ moi90の提案は正しいです。 genfromtxtloadtxtと同じことをする必要があります。

簡単に修正できると思うので、「良い最初の問題」としてタグを付けました。

このページは役に立ちましたか?
0 / 5 - 0 評価