Выберите строки из массива Numpy Rec - PullRequest
9 голосов
/ 06 сентября 2011

У меня есть массив Numpy rec, из которого я хотел бы выполнить несколько быстрых запросов, похожих на SQL: SELECT * where array['phase'] == "P".Я хотел бы получить массив записей в качестве выходных данных с каждой строкой, соответствующей строке из исходного массива, которая соответствовала критериям запроса.Есть идеи?Я почти уверен, что делал это раньше, но просто не помню функцию.

Спасибо

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')])

Ответы [ 2 ]

8 голосов
/ 06 сентября 2011

Попробуйте:

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

array['phase']=='P' возвращает массив логических значений. Когда idx является логическим массивом, array[idx] возвращает массив, состоящий из тех строк, где idx равно True.

0 голосов
/ 05 июля 2013

Попробуйте этот код:

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