2012-05-12 5 views
1

私は2D numpy配列visrecを持っています。私はnumpy.array access

print visrec[0,:] 

をすれば、私はこの出力を取得しています:

a1, a2,..がより明確に dtype=float64

ある

[ a1 a2 a3 a4 a5 a6] 

visrecnumpy.arrayオブジェクトに格納されているの1x6行列です。それが最初にこのコマンドを使用して作成されます。ループでは

visrec=numpy.array(numpy.zeros((1,6))) 

、私はvisrecを変性すると、リスト内の変更レコードを格納しています。私は基本的に各修正をリストrec_history=[]に追加しています。

rec_history.append(visrec[0,:]) 

次に、それをテストするために、私はちょうどこのコマンドでrec_historyの最初の要素を印刷したい:私は、このコマンドを使用する

print rec_history[0] 

出力は、次の形式になります。

[ a1 a2 a3 a4 a5 a6] 

ここまではすべて私が期待したとおりです。しかし、rec_historyの複数の要素を印刷しようとすると、予期しない出力が発生します。私は、このコマンドを発行します。

print rec_history[0:3] 

と、次の出力を得る:

[array([ a1, a2, a3, a4, a5 , 
     a6]), array([ b1, b2, b3, 
     b4, b5, b6]), array([ c1, c2, c3, 
     c4, c5, c6])] 

はこの正常ですか?私は実際にレコードリストに配列オブジェクトを格納していますか?この場合、リストの1つの要素だけを印刷すると、異なる種類の出力が得られないのはなぜですか?これは機能printと関連していますか?私は配列オブジェクトを格納したくないので、レコードリストに数値のリストを格納したい。これどうやってするの?私はmatlabを知っているが、私はここで私を助けていないと思う。

+0

これはかなり正常です。 rec_historyを印刷するときにどのような出力を見たいかを指摘してください。 – Hzyf

+0

コードは4つのスペースでインデントする必要があります。 '>'は引用符を使用します。 –

答えて

1

元の配列のスライスを保存していて、スライスの配列がrec_history[0:3]であるため、少なくとも3回追加したものと見なします。

あなたはあなたがする必要があるだろうrec_historyの最初の項目の最初の3つの項目たい場合:

rec_history[0][:3] 

を何らかの理由であなたがrec_history内部の配列をしたくない場合は、あなたがするappend行を変更することができます:

rec_history.append(list(visrec[0,:])) 

あなたがvisrecを変更する予定とあなたが行ったように単にアレイ・スライスを追加すると、それは、以前の状態に見えたかを確認したい場合には良いでしょうが唯一の配列のその部分への参照を作成します。したがって、コードで配列を変更すると、rec_historyのものも変更されます。

+0

私はnumpyの中で、配列の一部への参照は 'view'と呼ばれると信じています。 – mgilson

関連する問題