こちらScatterの中身になります.
GitHub - matplotlib/v3.6.0/lib/matplotlib/pyplot.py#L2773-L2784
追記
構文の意味を知りたいなら,構文の要素で検索すると良いでしょう.今回は「ndarray コロン 意味」でしょうか.もしくは「numpy コロン 意味」でも良いです.出てきた以下のサイトを参考に例示します.
NumPy配列ndarrayの要素・行・列を取得(抽出)、代入 - 整数値(インデックス)で指定
2階以上のテンソルに対して使われるX[:, 0], X[:, 1]
の意味はそれぞれ,列方向に0番目の要素全て,及び列方向に1番目の要素全てを取得するものです.2階のテンソルに限り,転置して行方向に0番目の要素の取得X.T[0], X.T[0, :]
することや,転置して行方向に1番目の要素を取得するX.T[1], X.T[1, :]
のと同じ動作になります.
Python
1>>> import numpy as np
2>>> X = np.arange(0, 3 * 3, 1).reshape(3, 3)
3>>> X
4array([[0, 1, 2],
5 [3, 4, 5],
6 [6, 7, 8]])
7>>> X[:, 0]
8array([0, 3, 6])
9>>> X.T[0]
10array([0, 3, 6])
11>>> X[:, 1]
12array([1, 4, 7])
13>>> X.T[1]
14array([1, 4, 7])
逆に言えば,例示いただいたコードX = np.dot(rng.rand(2, 2), rng.randn(2, 200)).T
の最後で転置.T
が行われていますが,これが無ければ,plt.scatter(X[0], X[1])
で十分でした.
3階以上のテンソルに対して使われる(カラー画像処理でよく見る)X[:, :, 0], X[:, :, 1]
の意味としては,深さ方向に0番目の要素全て,及び1番目の要素全てを取得するものです.画像配列であるとしたとき,HWC形式のテンソルかつフォーマットがRGBであれば,0番目に赤,1番目に緑,2番目に青の輝度情報が入っていることになりますので,X[:, :, 0]
で赤色のレイヤを取得,X[:, :, 1]
で緑色のレイヤを取得,といった具合の意味を持ちます.
Python
1>>> import numpy as np
2>>> X = np.arange(0, 3 * 3 * 3, 1).reshape(3, 3, 3)
3>>> X
4array([[[ 0, 1, 2],
5 [ 3, 4, 5],
6 [ 6, 7, 8]],
7
8 [[ 9, 10, 11],
9 [12, 13, 14],
10 [15, 16, 17]],
11
12 [[18, 19, 20],
13 [21, 22, 23],
14 [24, 25, 26]]])
15>>> X[:, :, 0]
16array([[ 0, 3, 6],
17 [ 9, 12, 15],
18 [18, 21, 24]])
19>>> X[:, :, 1]
20array([[ 1, 4, 7],
21 [10, 13, 16],
22 [19, 22, 25]])
N次元配列においてSquare brackets[]
を用いてアクセスされるデータは,コロン:
のみで全選択,a:b
で範囲選択を行って要素を抽出することになります.上の例において,いずれも全選択:
と単一要素選択を併用したものです.n次元の配列(N-dimensional array)を扱えるのでndarrayと呼ばれます.