2017-05-28 3 views
1
import matplotlib.pyplot as plt 

plt.scatter(X[:50, 0], X[:50, 1], 
      color='red', marker='o', label='setosa') 

このコードはPython Machine Learningです。 しかし、X[:50, 0]X[:50, 1]の意味は分かりません。`、`はインデックスボックスで何をしますか?

もう一度スライスして確認しました.SO post。しかし、インデックスボックスには,が記載されていません。

+0

その表記は['numpy']に特有です(https://docs.scipy.org/doc/numpy-1.12.0/reference/arrays.indexing.html#basic-slicing-and)。 -indexing) –

+0

@MosesKoledoye表記法はnumpyで実装されていますが、Urielの答えが示すように、どのクラスでもそれを利用することができます。 –

+0

@MosesKoledoyeはPythonでサポートされていますが、 'numpy'以外では使用されません。 –

答えて

3

の構文では、のコールが引数としてindiceにトリガーされます。

このショートカットは、またslice(x, y, z)を表現するための構文x:y:zの使用を可能にし、それがどのように使われるか通常であるが、それは限り、あなたの__getitem__はこれらをサポートしているとして、タプルや文字列のように、インデックスの他のタイプのためにも取り付けることができ。

このコードでは、次元ごとのスライスを含むタプルを使用して、2次元配列をスライスするためのnumpyの方法の一部として使用されます。今後の参考のために


、あなたはこのクラスでテストすることができます。

>>> class sliced: 
...  def __getitem__ (self, index): 
...    print(index) 

>>> d = sliced() 

>>> d[:50, 1] 
(slice(None, 50, None), 1) 

その特定の場合のために、コンマは、その最初のインデックスタプルを(のような1, 2はREPLで入力したならば)、作ります項目は:50で、開始点がないスライスとして評価され、末尾が50でステップが指定されていません(x:y:zの表記は空白にNoneを埋め込み、2番目の:は不要です)。

+1

@roganjoshスライスには、start、stop、stepの各引数があります。存在しない場合は、デフォルトでNoneになります。 –

+0

質問はカンマに関するものなので、カンマがインデックスをタプルにすることを具体的に指摘したいことがあります。 –

+0

@MarkTolonenが明らかになりました、ありがとう! – Uriel

0

組み込みのPythonリストのインデックス作成にはX[:50, 1]のようなものはありません。 numpyモジュールはこの構文を配列クラスに追加しました。実際にこのタイプのインデックス作成はMATLABで導入されました。詳細については、hereを参照してください。

関連する問題