1

カスタム オブジェクトの多数の配列があります。これらのオブジェクトの特定の属性の値を含む新しい配列を取得するにはどうすればよいですか?

例:

import numpy as np

class Pos():
   def __init__(self, x, y):
      self.x = x
      self.y = y

arr = np.array( [ Pos(0,1), Pos(2,3), Pos(4,5) ] )

# Magic line
xy_arr = .... # arr[ [arr.x,arr.y] ]

print xy_arr
# array([[0,1],
         [2,3],
         [4,5]])

このような操作の動機は、配列内のオブジェクトの重心を計算することです。

4

1 に答える 1

2

通常、一緒に属する複数の数量があり、numpysのインデックス作成能力を活用したい場合は、レコード配列を使用します。多くの追加/削除操作を行う場合、numpyは速度の点でかなり効果がない可能性があることに注意してください。

私があなたのコメントを正しく理解した場合、これは2つの値が3番目によって選択される例です。

import numpy as np

# create a table for your data
dt = np.dtype([('A', np.double), ('x', np.double), ('y', np.double)])
table = np.array([(1,1,1), (2,2,2), (3,3,3)], dtype=dt)

# define a selection mask
selection = table['A'] > 1.5
columns = ['x', 'y']

print table[selection][columns]

良い副作用は、データがすでにラベル付けされているため、h5pyを使用してこのテーブルを保存するのが非常に簡単で便利なことです。

于 2012-04-07T17:59:25.280 に答える