2

「data.txt」からnumpy配列にデータを取得し、matplotlibでプロットしようとしています。データの各行は次のようになります。

"1" 11.658870417634 4.8159509459201

約1000万行。

メモリマップに入れようとしていますが、このエラーが発生し続けます:

ValueError: Size of available data is not a multiple of data-type size.

私が使用しているコードは次のとおりです。

import numpy
import matplotlib

matplotlib.use('Agg')
import matplotlib.pyplot as plt

datatype=[('index',numpy.int), ('floati',numpy.float32), ('floatq',numpy.float32)]
filename='data.txt'

def main():
    data = numpy.memmap(filename, datatype, 'r') 
    plt.plot(data['floati'],data['floatq'],'r,')
    plt.grid(True)
    plt.title("Signal-Diagram")
    plt.xlabel("Sample")
    plt.ylabel("In-Phase")
    plt.savefig('foo2.png')

if __name__ == "__main__":
    main()  

どこが間違っているのか教えていただければ幸いです。

4

2 に答える 2

3

これはバイナリ ファイルではなく、テキスト ファイルです。memmapデータがバイナリとして格納されている場合にのみ機能します (つまり、配列がメモリに格納されるように格納されます)。

ファイルを 1 行ずつ読み取り、変換された各行を書き込み可能な .xml ファイルに格納することで、ファイルをバイナリに変換できますmemmap

于 2013-03-08T20:55:19.890 に答える
2

numpy.genfromtxtまたはを使用することをお勧めしますnumpy.loadtxt。例えば:

datatype=[('index',numpy.int), ('floati',numpy.float32), ('floatq',numpy.float32)]
filename='data.txt'

def main():
    data = numpy.genfromtxt(filename, dtype=datatype) 
    ...
于 2013-03-08T21:13:45.187 に答える