7

テキストファイルに数行を書き込もうとしています。使用したコードは次のとおりです。

import numpy as np

# Generate some test data
data = np.arange(0.0,1000.0,50.0)

with file('test.txt', 'w') as outfile:      
    outfile.write('# something')

    for data_slice in data: 
        np.savetxt(outfile, data_slice, fmt='%1.4e')

        outfile.write('# New slice\n')

コードがsavetxtの行まで実行されると、次のエラーが発生します。

     IndexError: tuple index out of range

なぜこれが起こるのか考えていますか?「fmt」の部分を削除してみましたが、同じ結果になりました。

4

1 に答える 1

7

問題は、numpy.saveがいくつかの形状情報を含む配列を予期しているのに対し、数値だけを渡すことです。

一度に1つの要素を渡したい場合(ただし、配列全体を保存することをお勧めします)、最初にそれを少なくとも1つの形状のnumpy配列に変換する必要があります。

np.savetxt(outfile, array(data_slice).reshape(1,), fmt='%1.4e')

これは、単一の数値の形状が無効なタプルであり、ファイルに書き込むために、最初の次元に沿って分割しようとするためです。

array(1).shape == tuple()
#True

配列全体を保存するには、次のことを行うだけで十分です。

np.savetxt(outfile, data, fmt='%1.4e')
于 2012-11-06T17:08:45.797 に答える