Julia 言語を利用したベクトル演算

ベクトル

julia ではベクトルを 1 次元の配列として扱う。配列の添字は、R と同じで、1 から始まる。

ベクトルの作成と要素の取り出し方

一般的なプログラミング言語と同じく、次のようにして一次元配列を変数に保存することができる。また、一次元配列が保存された変数から各要素を取り出すときに、添字を利用できるほかに、真偽からなる配列を利用することもできる。

ベクトルの作成

a = [1, 1, 2, 3, 5, 8, 13]
b = [1, 4, 9, 16, 25, 36, 49]

c = a + b
## 7-element Array{Int64,1}:
##   2
##   5
##  11
##  19
##  30
##  44
##  62

2 つのベクトルをつなげるときは、 vcat を利用する。

t = [1, 3, 5]
s = [2, 4, 6]

v = vcat(t, s)
v
## 6-element Array{Int64,1}:
##  1
##  3
##  5
##  2
##  4
##  6

ベクトル要素の取り出し

x = [11, 22, 33, 44, 55, 66, 77]
x[[1, 3, 5, 7]]
## 4-element Array{Int64,1}:
##  11
##  33
##  55
##  77

x[[true, true, true, false, false, false, true]]
## 4-element Array{Int64,1}:
##  11
##  22
##  33
##  77

データ統計量の計算

合計、平均や分散などのデータの統計量を計算するときは、Statistics モジュールに実装されている関数を利用すると便利である。Statistics モジュールを利用するときに、あらかじめインポートする必要がある。

import Statistics
using Statistics

y = [1, 3, 5, 7]

sum(y)
## 16

mean(y)
## 4.0

var(y)
## 6.666666666666667

cumsum(y)
## 4-element Array{Int64,1}:
##   1
##   4
##   9
##  16

その他、中央値や相関係数などを計算することもできる。詳細は Julia ドキュメント を参照。

ベクトル要素の並べ替え

ベクトルを昇順あるいは降順で並べかえるには sort を利用する。

t = [3, 1, 4, 8, 2, 6, 7, 5]

sort(t)
## 8-element Array{Int64,1}:
##  1
##  2
##  3
##  4
##  5
##  6
##  7
##  8

sort(t, rev=true)
## 8-element Array{Int64,1}:
##  8
##  7
##  6
##  5
##  4
##  3
##  2
##  1

また、次のように並べ替えための順番を求めてから、並び替えを実行することもできる。

t = [3, 1, 4, 8, 2, 6, 7, 5]
s = sortperm(t)
s
## 8-element Array{Int64,1}:
##  2
##  5
##  1
##  3
##  8
##  6
##  7
##  4

t[s]
## 8-element Array{Int64,1}:
##  1
##  2
##  3
##  4
##  5
##  6
##  7
##  8

ベクトルの要素を逆転させるには reverse を利用する。

t = [3, 1, 4, 8, 2, 6, 7, 5]

reverse(t)
## 8-element Array{Int64,1}:
##  5
##  7
##  6
##  2
##  8
##  4
##  1
##  3

ベクトルの集合演算

集合演算については以下のように関数を利用できる。

p = [1, 2, 3, 4, 5, 6, 7, 8]
q = [2, 4, 6, 8, 10, 12, 14, 16]

union(p, q)
## 12-element Array{Int64,1}:
##   1
##   2
##   3
##   4
##   5
##   6
##   7
##   8
##  10
##  12
##  14
##  16

intersect(p, q)
## 4-element Array{Int64,1}:
##  2
##  4
##  6
##  8

setdiff(p, q)
## 4-element Array{Int64,1}:
##  1
##  3
##  5
##  7

setdiff(q, p)
## 4-element Array{Int64,1}:
##  10
##  12
##  14
##  16