2016-10-06 4 views
0

Kaggle 솔루션의 일부 코드를 이해할 수 없습니다. 여기 배열의 numpy 조건 이해

는 데이터의 예는 다음과 같습니다

PassengerId,Survived,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked 
1,0,3,"Braund, Mr. Owen Harris",male,22,1,0,A/5 21171,7.25,,S 
2,1,1,"Cumings, Mrs. John Bradley (Florence Briggs Thayer)",female,38,1,0,PC 17599,71.2833,C85,C 
3,1,3,"Heikkinen, Miss. Laina",female,26,0,0,STON/O2. 3101282,7.925,,S 

목표는 여성과 배열을 추출하는 것입니다, 그들은 이런 식으로 작업을 수행합니다

# data contains all the passengers 
women_only_stats = data[0::,4] == "female" 
females_data = data[women] 
print(data[women][0]) # Will print the first women of the dataset of only women. 

내가 이해 women_data_only 것 식 data[0::,4] == "female"의 평가의 결과 인 TrueFalse의 배열이 아니면 안됩니다.
내가 이해하지 못하는 것은 데이터 [여성]이 여성 만의 배열 인 이유입니다.


numpy은 어떻게 평가합니까? 그것이 어떻게 작동하는지

+1

[부울 또는 "마스크"색인 배열] (http://docs.scipy.org/doc/numpy/user/basics.indexing.html#boolean-or-mask-index-arrays) –

+1

"부울 색인 생성"으로 검색 –

+0

매우 유용합니다. 감사합니다! – Mornor

답변

1

은 다음과 같습니다

women_only_stats = data[0::,4] == "female"이 dataframe의 인덱스에 대한 마스크 (booleans의 배열)을 생성합니다. data에 전달하면

는, 마스크는 투사 할 것women_only_statsTrue입니다 샘플에 따라서 여성 만 유지.

마스크 색인 생성에 대해 here을 볼 수 있습니다.

+0

감사! 따라서 원래의 데이터 프레임에서 각 'female'은 'True'또는 'False'값으로 대체 (오버레이)되고 결과 배열은 네 번째 열의 값이 'True'인 행만 유지합니다. 나는 이것을 말함으로써 옳은가? – Mornor

+0

대체하지 않습니다. 그것은 데이터 프레임을 변경하지 않습니다. ** mask **라고하는 부울 배열을 만듭니다. 그런 다음이 마스크를 데이터 프레임에 전달하면 (예 :이 마스크로 인덱싱 할 때) 'mask == True' 인 샘플을 투영합니다. 그런 다음 샘플은 여성 만있는 데이터 프레임으로 돌아갑니다. – MMF

+0

아! 가져와 !! 이 설명과 시간을 내 주셔서 감사합니다. – Mornor