Julialangでの多次元配列使用のメモ: 配列の作成
多次元配列に関するドキュメントなど
自分のための覚書、チートシート。Juliaのバージョンは0.3を使用。
公式ドキュメント
Multi-dimensional Arrays — Julia Language 0.3.6-pre documentation
これらも参照
http://sebastianraschka.com/Articles/2014_matrix_cheatsheet_table.html
100 julialang exercises - Qiita
http://bogumilkaminski.pl/files/julia_express.pdf
初期化
zeros, ones, eye
julia> zeros(3) 3-element Array{Float64,1}: 0.0 0.0 0.0 julia> zeros(3,1) 3x1 Array{Float64,2}: 0.0 0.0 0.0 julia> zeros(3,4) 3x4 Array{Float64,2}: 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 julia> ones(4,2) 4x2 Array{Float64,2}: 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 julia> eye(3) 3x3 Array{Float64,2}: 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 julia> eye(Int,3) 3x3 Array{Int64,2}: 1 0 0 0 1 0 0 0 1 julia> eye(3,4) 3x4 Array{Float64,2}: 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 julia> eye(3,4,2) ERROR: `eye` has no method matching eye(::Int64, ::Int64, ::Int64)
- 2次元のNx1 Arrayと1次元のN-element Arrayは別の型を持つ。
- 最初の引数で数値の型を指定できる。デフォルトはFloat64
- eyeは正方行列じゃなくても使える。
rand
julia> rand() 0.8480348007358423 julia> rand(1,3) 1x3 Array{Float64,2}: 0.327055 0.251911 0.37398 julia> rand(1:4,1,10) 1x10 Array{Int64,2}: 3 4 3 4 1 3 2 3 2 3 julia> rand(1.0:0.3:9.0,1,10) 1x10 Array{Float64,2}: 1.9 5.5 1.0 1.3 2.2 5.2 6.4 2.2 4.9 2.5
- 最初の引数で型あるいは乱数の範囲を指定できる。 範囲は以下の様な指定方法がある。
1:4 # == 1, 2, 3, 4 1:2:10 # == 1, 3, 5, 7, 9 1:1.5:10 # == 1, 2,5, ...8.5, 10.0
範囲型の値は[]で囲むことで1次元の配列に変換できる。
julia> [1:1.5:10]' 1x7 Array{Float64,2}: 1.0 2.5 4.0 5.5 7.0 8.5 10.0
'
は転置行列を作る後置演算子。
内包表記
- 以下の式において、x,a,zがそれぞれ指定された範囲を動き、x+a+zを各セルの値とする。
- 変数名はなんでも良い。変数の登場順(この場合、x, a, z)に行、列、第3次元となる。
julia> a = [x+a+z for x=0:2, a=0:5, z=0:1] 3x6x2 Array{Int64,3}: [:, :, 1] = 0 1 2 3 4 5 1 2 3 4 5 6 2 3 4 5 6 7 [:, :, 2] = 1 2 3 4 5 6 2 3 4 5 6 7 3 4 5 6 7 8