この配列の列の1つでソートできるようにdtypeを設定しようとしています。たとえば、配列に[1 2]
という行があるとします。 dtypeを見た後は[(1,1),(2,2)]
になります。たとえば、これは実行しようとしているコードです。numpyでdtypeを設定すると、各値がタプルになるようです
print "original shape \n",b.shape
print 'original \n',b
typ = [('dist',float),('ys',float)]
p = np.array(b,dtype=typ)
print "new shape \n", p.shape
print "new \n",p
と、この出力
original shape
(3, 2)
original
[[ 10.29563014 1. ]
[ 6.08276253 3. ]
[ 18.44670431 7. ]]
new shape
(3, 2)
new
[[(10.295630140987, 10.295630140987) (1.0, 1.0)]
[(6.082762530298219, 6.082762530298219) (3.0, 3.0)]
[(18.44670431269499, 18.44670431269499) (7.0, 7.0)]]
技術的には、形状が変更されませんが、私はそれが基本的にタプルの各エントリ自体の複製を作る理由は分からないです。 これを修正する方法はありますか?
は、化合物のDTYPEのドキュメントを再読み込み。構造体配列の表示スタイルに注意してください。 – hpaulj
'astype'は各要素を新しいdtypeに変換しているので動作しません。各行(要素のペア)を新しいdtypeに変換することを期待します。 – hpaulj