下記の `mglearn.discrete_scatter(X_train[:, 0], X_train[:, 1], y_train)` の  
`X_train[:, 0], X_train[:, 1]` というところはどういう意味ですか？  
このコードを打つと点がグラフに表記されました。

```

    from sklearn.neural_network import MLPClassifier
    from sklearn.datasets import make_moons
    
    X, y = make_moons(n_samples=100, noise=0.25, random_state=3)
    
    X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y,
                                                    random_state=42)
    
    mlp = MLPClassifier(solver='lbfgs', random_state=0).fit(X_train, y_train)
    mglearn.plots.plot_2d_separator(mlp, X_train, fill=True, alpha=.3)
    mglearn.discrete_scatter(X_train[:, 0], X_train[:, 1], y_train)
    plt.xlabel("Feature 0")
    plt.ylabel("Feature 1")
    
```

参照：pythonではじめる機械学習
CC BY-SA 3.0
2017-08-12T16:00:13.560
37146
2017-08-17T03:28:48.930
2017-08-17T03:28:48.930
19110
23690
question
python
mglearn.discrete_scatter(X_train[:, 0], X_train[:, 1], y_train)の意味について
NumPy の array に対するスライスです。

array には `[a:b]` のように書くと `a` 以上 `b` 未満のインデックスの要素を切り取れる機能があるのですが、更に `[:]`
と書くと全ての要素への指定になります。

今回の場合それを多次元 array に使っています。たとえば `[:, 0]`
だと「第1次元は全ての要素、第2次元は0番目だけ」、つまり、全ての要素の先頭だけとってくる、という指定になります。

```

    # Python 3.6.0, NumPy 1.13.1
    >>> import numpy as np
    >>> sample = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
    >>> sample[0:2]
    array([[1, 2, 3],
           [4, 5, 6]])
    >>> sample[:, 0]
    array([1, 4, 7])
    >>> sample[:, 1]
    array([2, 5, 8])
    >>>
    
```

### 参考

  * [Indexing](https://docs.scipy.org/doc/numpy/reference/arrays.indexing.html) \-- NumPy v1.13 Manual
  * [NumPy配列のスライス表記の参照と代入](https://hydrocul.github.io/wiki/numpy/ndarray-ref-slice.html) \-- hydroculのメモ
CC BY-SA 3.0
2017-08-17T03:15:11.520
37263
2017-08-17T03:27:59.280
2017-08-17T03:27:59.280
19110
19110
37146
answer