2011-08-04 9 views
4

配列やrec.arrayに複数の記号を使用する方法について簡単な質問があります。より具体的には、複数の条件を満たすアレイ内の細胞を単離したいと考えています。たとえば: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]) 

私はtest_rec年齢が1で、test_rec.sexが1でありtest_recを隔離したい、すなわち:

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

残念ながら、これは動作しません。

+0

再配列が正しく作成されていないようです。 – Swiss

答えて

1

使用logical_and()またはbitwise_and()、そして、あなたはbitwise_andを行う&演算子()を使用することができます:

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

括弧はiです&の優先順位が==より低いため、重要なものです。

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] 

参照:

numpy logical operations

numpy.nonzero

関連する問題