2011-08-04 4 views
4

J'ai une question simple sur la façon d'utiliser plusieurs indices pour un tableau ou rec.array. Plus précisément, je veux isoler la (les) cellule (s) dans un tableau répondant à plusieurs conditions. Par exemple:Utilisation de plusieurs indices pour les tableaux en python

import numpy as np 
test = np.ones(5) 
test_rec = test.view(recarray) 
test_rec.age = np.array([0,1,2,1,4]) 
test_rec.sex = np.array([0,1,1,0,0]) 

Je veux isoler test_rec où l'âge est test_rec 1 ET test_rec.sex est 1, à savoir:

test_rec[test_rec.age==1 and test_rec.sex==1] 

Malheureusement, cela ne fonctionne pas.

+0

Il semble que vous créez incorrectement votre recarray. – Swiss

Répondre

1

utilisation logical_and() ou bitwise_and(), et vous pouvez utiliser l'opérateur & faire bitwise_and():

test_rec[(test_rec.age==1) & (test_rec.sex==1)] 

les parenthèses est i important, car la précédence de & est inférieure à ==.

1
age_is_one = test_rec.age == 1 
sex_is_one = test_rec.sex == 1 
age_and_sex = numpy.logical_and(age_is_one, sex_is_one) 
indices = numpy.nonzero(age_and_sex) 
test_rec[indices] 

Voir:

numpy logical operations

numpy.nonzero

Questions connexes