2011-09-06 11 views
9

私は、SQL:SELECT * where array['phase'] == "P"のようなクイッククエリを実行したいNumpy rec配列を持っています。私は、レコード配列を、各行がクエリ条件を満たす元の配列からの行に対応する出力として取得したいと考えています。何か案は?私はこれまでこれをやっていると確信していますが、機能を覚えていないだけです。Numpy Rec Arrayから行を選択してください

おかげ

rec.array([ (5295499, 2.8123965, 127.20443, 0.0, 1237680436.06, 908, -19.942589, 134.33951, 0.3888, 'P', 0.19513991), 
     (5295499, 2.8123965, 127.20443, 0.0, 1237680436.06, 1387, -18.102, 125.639, 0.11, 'P', 1.2515257), 
     (5447254, 39.025873, 143.31065, 0.0, 1245455521.85, 1512, 33.121667, 130.87833, 0.573, 'LR', 45.099504)], 
     dtype=[('eventid', '<i4'), ('eventlat', '<f8'), ('eventlon', '<f8'), ('eventdepth', '<f8'), ('eventtime', '<f8'), ('stationid', '<i4'), ('stationlat', '<f8'), ('stationlon', '<f8'), ('stationelv', '<f8'), ('phase', '|S7'), ('timeresidual', '<f8')]) 

答えて

7

試してみてください。

array[array['phase']=='P'] 

array['phase']=='P'ブールnumpyの配列を返します。 idxがブール値配列の場合、array[idx]は、idxTrueの行からなる配列を返します。

+1

これは天才です!しかし、単に他のppl:配列を明示するためにここではnumpy.arrayを参照していません。これはレコード配列の名前を参照します。たとえば、データと呼ばれる再配列があった場合、私はしたいと思う:data [data ['phase'] == 'P']] – Rishi

0

は、このコードを試してみてください。

array[array.phase=='P'] 
関連する問題