Как выполнить булевскую нарезку в массиве кортежей в numpy

У меня такой CSV файл

vehicle,speed,datetime,x,y
61C22276,0.0,1.4926212E9,106.33695,11.12652
60C28912,0.0,1.4926212E9,106.84327166666667,10.90424
51D06538,0.0,1.4926212E9,106.7806,10.765768333333334
50LD08650,0.0,1.4926212E9,106.91705,10.746173333333333
50LD08519,41.0,1.4926212E9,106.95493,10.739623333333334
50LD07182,0.0,1.4926212E9,106.917225,10.746073333333333

Я импортировал эти данные в numpy

my_data = genfromtxt('data/2017-04-20.csv',names=True,delimiter=',')

Выход:

[(b'61C22276', 0., 1.49262120e+09, 106.33695 , 11.12652 )
 (b'60C28912', 0., 1.49262120e+09, 106.84327167, 10.90424 )
 (b'51D06538', 0., 1.49262120e+09, 106.7806 , 10.76576833) ...,
 (b'61C18919', 0., 1.49265726e+09, 106.77865833, 11.03690667)
 (b'61C18919', 0., 1.49265729e+09, 106.77865833, 11.03690667)
 (b'61C18919', 0., 1.49265732e+09, 106.77865833, 11.036905 )]

который представляет собой массив кортежей (поскольку мои данные состоят из нескольких типов)

Как мне нарезать my_data на основе значения столбца? (Пример: список всех рядов vehicle 61C2226)

1 ответ

У вас есть структурированный массив. Затем, чтобы выбрать "строку", вот как это сделать:

boolindex=my_data['vehicle']=='50LD08519'
selection=my_data[boolindex] 

#array([('50LD08519', 0.0, 1492621184.0, 106.91705322265625, 10.746172904968262),
# ('50LD08519', 41.0, 1492621184.0, 106.9549331665039, 10.739623069763184)], 
# dtype=[('vehicle', '
<p> "Pandas" дает вам более приятный ввод-вывод и интуитивный синтаксис:</p> <pre class="prettyprint linenums">In [521]: my_data=pd.read_csv('data.csv') vehicle speed datetime x y 0 61C22276 0 1,492,621,200 106 11 1 60C28912 0 1,492,621,200 107 11 2 51D06538 0 1,492,621,200 107 11 3 50LD08519 0 1,492,621,200 107 11 4 50LD08519 41 1,492,621,200 107 11 5 50LD07182 0 1,492,621,200 107 11 In [522]: my_data[my_data['vehicle']=='50LD08519'] Out[522]: vehicle speed datetime x y 3 50LD08519 0 1,492,621,200 107 11 4 50LD08519 41 1,492,621,200 107 11</pre>

licensed under cc by-sa 3.0 with attribution.