2016-11-30 14 views
1

別々の列に分割行列データ(frag_coords):Pythonの - 私は、ファイルからデータを読み込み、行列に格納されている

frag_coords = 
[[ 916.0907976 -91.01391344 120.83596334] 
[ 916.01117655 -88.73389753 146.912555 ] 
[ 924.22832597 -90.51682575 120.81734705] 

... 
[ 972.55384732 708.71316138 52.24644577] 
[ 972.49089559 710.51583744 72.86369124]] 

type(frag_coords) = 
class 'numpy.matrixlib.defmatrix.matrix' 

指定した列で行列を並べ替えたときに、私はすべての問題を持っていません。例えば、以下のコードは正常に動作します:

order = np.argsort(frag_coords[:,2], axis=0) 

私の問題は、ということです。

len(frag_coords[0]) = 1 

私が個別に最初の行の個々の番号にアクセスする必要がある、私は変換、それを分割しようとしましたそれはリストになり、すべてが列ではなくlen = 1の単一の要素として3つの数値を返すようです。私は助けてください!

答えて

0

ndarrayの代わりにmatrixを使用しているという問題があります。あなたはそれをしてもよろしいですか?

マトリックスの場合、最初の行だけをインデックスするともう1つの行列、行行列が得られます。 frag_coords[0].shapeを確認してください:(1,3)になります。 ndarrayについては、(3,)となります。

frag_coords[0,j] 

をそれとも、一時的に列を格納する場合、行の行列としてそこにちょうどインデックス:あなたが唯一のインデックスに最初の行が必要な場合は

、2つのインデックスを使用

tmpvar = frag_coords[0] # shape (1,3) 
print(tmpvar[0,2])  # for column 2 of row 0 

の場合あまりにも多くの行列演算を必要としないので、代わりにnp.arrayを使用することをお勧めします。あなたはいつもあなたのデータを直接配列に読み込むことができますが、任意の点で、もし望むならば、np.array(frag_coords)で既存の行列を変換することもできます。

+1

ありがとうございます!私は計算を実行するための行列を必要としていると思っていましたが(主に変換と回転を調整するのは気にならない)、代わりに配列を使うことができます。 – IsisDorus

+0

@IsisDorus私は助けることができてうれしいです:) pythonバージョン3.5以降では、十分に新しいnumpyバージョンでは、行列乗算に '@'演算子を使うことができます。さもなければ、同じことをするために 'numpy.dot'を使う必要があります。とにかく、配列は通常ははるかに便利です:) –

関連する問題