2016-07-06 11 views
2

私はPythonとNumPyを使って問題を解決しているKaggle Titanic tutorialに従っています。私はデータ[0 ::、]とデータ[0 :,]の違いを理解するのが難しいです。私は、以下の関連するコードスニペットをコピー&ペースト:numpyの配列をフィルタリングするとき、0 ::と0の違いは何ですか?

for i in xrange(number_of_classes):  #loop through each class 
    for j in xrange(number_of_price_brackets): #loop through each price bin 

     women_only_stats = data[       # Which element   
           (data[0::, 4] == "female") & # is a female and 
           (data[0::, 2].astype(np.float) # was ith class 
            == i+1) 
           &        # and 
           (data[0:, 9].astype(np.float) # was greater 
            >= j * fare_bracket_size) # than this bin 
           &        # and 
           (data[0:, 9].astype(np.float) # less than 
            < (j+1)*fare_bracket_size) # the next bin  
           , 1]      # in the 2nd col 
+2

結果に変更があるかどうかを確認するために切り替えを試みましたか?どちらも、スライスでデフォルトの 'stop'と' step'を使用しています。 – jonrsharpe

+0

@wimああ、それは本当です、チュートリアルでは2.7を使用しています。しかし、 'numpy'は実際にそれを行いますか? – jonrsharpe

+0

いいえ、誤解されました。なぜなら、OPのケースでは常にタプルでgetitemされているからです。 – wim

答えて

2

違いはありません、両方の方法は、同じように__getitem__にフックします。

>>> class Thing(object): 
...  def __getitem__(self, item): 
...   print(repr(item)) 
... 
>>> t = Thing() 
>>> t[0:, 4] 
(slice(0, None, None), 4) 
>>> t[0::, 4] 
(slice(0, None, None), 4) 
+0

したがって、0の代わりに0 ::を使用しても問題ありません。 – gyurisc

関連する問題