2016-10-06 18 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"は、あなたのデータフレームのインデックスのためにマスクbooleansの配列)を作成します。 dataに渡されると

は、マスクが投影を行いますwomen_only_statsTrueあるサンプルに、これだけの女性を保ちます。

マスクインデックスについては、hereの外観を持つことができます。

+0

ありがとう!したがって、元のデータフレームでは、各「女性」は値「True」または「False」で置き換えられ(オーバーレイされ)、結果の配列は4列目の値が「True」の行のみを保持します。私はこれを言って正しいですか? – Mornor

+0

交換していません。データフレームは変更されません。 ** mask **と呼ばれるブール値の配列を作成します。次に、このマスクをデータフレームに渡すと(つまり、このマスクでインデックスを作成すると)、 'mask == True'のサンプルが投影されます。サンプルが女性だけであるデータフレームを返します。 – MMF

+0

ああ!それを得る!! この説明と、あなたが私のために取った時間のために多くのおかげで。 – Mornor

関連する問題