Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

selecting rows in numpy ndarray based on the value of two columns

Tags:

I have a big np.ndarray (3600000,3), the HUE, the VALUE, and an associated CLASS number. For each pairs of HUE and VALUE I would like to find, using this array the corresponding Class number. I'm a very beginner in Python and have a hard time doing it. Do you know a way to do it?

Thank you in advance!

like image 938
user3584444 Avatar asked Apr 29 '14 08:04

user3584444


1 Answers

I assume your array looks like:

       |(HUE)(VALUE)(CLASS) row/col|   0     1     2 -------+----------------- 0      |   0     1     2 1      |   3     4     5 2      |   6     7     8 .      |   .     .     . .      |   .     .     . 3599999|   .     .     . 

And here is the sample code. For simplicity I changed the size 3600000 to 5.

a = np.array(xrange(5 * 3)) a.shape = (5, 3) 

Now array a look like this:

array([[ 0,  1,  2],        [ 3,  4,  5],        [ 6,  7,  8],        [ 9, 10, 11],        [12, 13, 14]]) 

If you want row with HUE=9, do like this:

a[np.where(a[:,0] == 9)] #array([[ 9, 10, 11]]) 

If you want row with VALUE=4, do like this:

a[np.where(a[:,1] == 4)] #array([[3, 4, 5]]) 

If you want row with HUE=0 and VALUE=1, do like this:

a[np.where((a[:,0] == 0) * (a[:,1] == 1))] #array([[0, 1, 2]]) 
like image 197
Kei Minagawa Avatar answered Oct 26 '22 11:10

Kei Minagawa