Indicator行列:broadcast
Indicator行列
例えば、各要素は1〜3番目のどれかが1、他は0になっていて、
要素1:1番目が1、他は0
要素2:3番目が1、他は0
要素3:2番目が1、他は0
要素4:1番目が1、他は0
というとき、
1 0 0
0 0 1
0 1 0
1 0 0
という行列。
作り方:broadcast()
する
上記のindicator行列を作るとき、例えば配列として
v = [1, 3, 2, 1] #ベクトルの場合はvec(v)
を持っていたとすると、次のようにして作れる*1:
IND = broadcast(.==, v, (1:3)')
4x3 Array{Int64,2}:
1 0 0
0 0 1
0 1 0
1 0 0
(1:3)'
はベクトル[1 2 3]
。- vと(1:3)'を要素ごとに評価(
.==
)し、値が等しいところで1が立つ。
Boradcastについては、以下参照:
Multi-dimensional Arrays — Julia Language 0.4.3-pre documentation (本家)
NumPyのブロードキャストのメモ - 唯物是真 @Scaled_Wurm(Pythonの記事。わかりやすいです。)
*1:ここでの内容はstackoverflow julia lang - convert Array to indicator matrix - Stack Overflow のajcr氏の回答の内容ほぼそのままです。