これがバグなのか機能なのかはわかりませんが、私が使用する場合:
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)
は期待どおりに機能します。
バグのように見えますが、別の方法で通知されるまでそのようにマークします。
これを少し調べました。
@ 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の提案は正しいです。 genfromtxt
はloadtxt
と同じことをする必要があります。
簡単に修正できると思うので、「良い最初の問題」としてタグを付けました。
最も参考になるコメント
私もこれを経験します。
loadtxt
はもう少し賢いです:genfromtxt
がこれを行わないのはなぜですか?