1

ファイルからデータを読み取り、そこから必要な情報を float として抽出しています。次に、このデータを一時リストに保存vstackし、各行が処理中の新しいデータである配列にデータを入れようとしています。

for line in lines:
    if line.find('GPS')!=-1:
        funcGPS(line)
    if line.find('-----')!=-1:
        MasterArray = numpy.vstack(temp)
        temp = []
        #print MasterArray
    if line.find('SERVO')!=-1:
        funcSERVO(line)

これは、データを配列にコピーしようとしている方法です。データを正常に抽出しています。取得したデータを抽出した後、データを配列に追加したいと考えています。現在、ビルド時に以前のデータにデータをコピーしていますMasterArray。サイズが何であるかを具体的に述べずにこれを行う方法はありMasterArrayますか? 取得できるデータの量を制限したくありません。

ありがとう!

4

1 に答える 1

2

ループ内で配列を拡張することは、悪い習慣と見なされます。配列の最終的なサイズ、または適切な上限がわかっている場合は、配列を事前に割り当ててから埋めるのが最善です。最終的なサイズがわからない場合は、多くの場合一時リストを使用して、ループの後に配列に変換できます。これは numpy に固有のものではなく、matlab と c プログラムで同様の使用パターンが見られます。

配列の最終的なサイズまたは適切な上限がわかっている場合は、次のようにします。

N = 100
array = np.zeros(100)
count = 0
for line in file:
    array[count] = ...
    count += 1
 array = array[:count] # Or maybe array[:count].copy()

または、そうでない場合はこのようなもの。

temp = []
for line in file:
    temp.append(...)
array = np.array(temp)
于 2013-09-10T16:37:15.143 に答える