2011-08-04 3 views
4

배열이나 rec.array에 여러 개의 indicies를 사용하는 방법에 대한 간단한 질문이 있습니다. 더 구체적으로 말하자면, 여러 가지 조건을 충족하는 배열에서 셀을 분리하고 싶습니다. 예를 들어 :파이썬에서 배열에 대해 여러 개의 indicies 사용하기

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 분리 할 및 test_rec.sex는, 즉 1 :

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

불행하게도,이 작동하지 않습니다.

+0

recarray를 잘못 만들고있는 것으로 보입니다. – 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

관련 문제