私は112行と40列の配列を持っています。Numpy:最小の操作数でこのアレイを作り直す
私が変換する必要があるフォーマットは、x、yのそれぞれ56ポイントの40セットです。
したがって、最初の行には、各セットの最初の点のx座標があります。 2行目は、セット内の2番目の点のxを56行目まで持ちます。その後、私はyを持っています。
1st line : 40 x's
2nd line: 40 x's
...
56th line: 40 x's
57th line: 40 y's
...
112th line: 40 y's
は当初、私はdata.reshape(40, 56, 2)
をすることについて考えたが、xの値がyの値の前に来るので、それは動作しません。代わりに、私はxとyの1つの行があっても動作します。
編集:
for i in xrange(len(data)/2):
points.append(data[i])
points.append(data[i+len(data)/2])
points = np.array(points).T.reshape(len(data[0]), len(data)/2, 2)
return points
これは私が探していたものです。ありがとう。あなたは0と2を使った理由を私に説明できますか? – pnodbnda
試行錯誤。 :-) 'reshape'は私を混乱させます。特にMatlabはデフォルトで列方向を横断するので、Numpyはデフォルトで横列を横断します。健全性チェックとして、numpy.arange(112 * 40).reshape(112,40)を作成します。次に、それを再形成し、要素が所望の出力と一致するかどうかチェックします。 –
私はそれを得た。それは3次元なので、スワップすると0と2を入れ替えると、2と40が入れ替わります。つまり、配列が得られます。40 x 56 x 2 – pnodbnda