Julia の Base.Vector は、指定した型の要素を持つ1次元の密な配列で、Core.Array{T,1}
の別名である。数学のベクトルを表すのによく使われる。
Base.Vector はコレクションの一種である。Julia 言語には、以下に示すコレクションがある。
コレクション | 順序 | 名前 | 値の重複 | 要素の追加・変更 |
---|---|---|---|---|
Core.Array | ✓ | ✗ | ✓ | ✓ |
Core.NamedTuple | ✓ | ✓ | ✓ | ✗ |
Core.Tuple | ✓ | ✗ | ✓ | ✗ |
Base.Dict | ✗ | ✓ | ✓ | ✓ |
Base.Matrix | ✓ | ✗ | ✓ | ✓ |
Base.Set | ✗ | ✗ | ✗ | ✗ |
Base.Vector | ✓ | ✗ | ✓ | ✓ |
Base.Vector は以下に示す特徴を持つ。
上記の特徴は Core.Array と同じである。実際、Base.Vector は Core.Array{T,1} の別名である。Base.Vector は、一般的に「ベクトル」と呼ばれる。
Vector{T} <: AbstractVector{T}
ベクトルの値はカンマ、改行又はセミコロンで区切る。
julia> v = [1,2,3]
3-element Vector{Int64}:
1
2
3
julia> v = [
1
2
3
]
3-element Vector{Int64}:
1
2
3
julia> v = [1;2;3]
3-element Vector{Int64}:
1
2
3
要素の型を指定することもできる。
julia> v = Int32[1,2]
2-element Vector{Int32}:
1
2
要素の範囲を指定してベクトルを生成することができる。
Vector(start:end)
Vector(start:step:end)
julia> v = Vector(1:3)
3-element Vector{Int64}:
1
2
3
julia> v = Vector(2:3:8)
3-element Vector{Int64}:
2
5
8
ただし、ブラケット(角括弧)内に要素の範囲を記述すると、UnitRange 型のベクトルになってしまう。
julia> v = [1:3]
1-element Vector{UnitRange{Int64}}:
1:3
リスト内包表記とは、既存のリストから新たなリストを作成する表記法であり、数学における集合の内包的記法に準拠している。
集合の表し方には「外延的」と「内包的」という2種類の記法がある。
外延 (extension) 的な記法とは、すべての元(要素)を列挙して集合を表す方法である。Julia の Base.Vector の場合、以下のように記述する。
julia> v = [2, 4, 6]
3-element Vector{Int64}:
2
4
6
内包 (intension) 的な記法とは、元が満たすべき条件を記述して集合を表す方法である。Julia の Base.Vector の場合、以下のように記述する。
julia> v = [ 2 * i for i in 1:3 ]
3-element Vector{Int64}:
2
4
6
julia> a = [2,3]
2-element Vector{Int64}:
2
3
julia> b = [6,2]
2-element Vector{Int64}:
6
2
julia> a + b
2-element Vector{Int64}:
8
5
Core.Array メソッドを使ってベクトルを生成できる。
Array{T}(undef, dims)
Array{T,N}(undef, dims)
Array{T}(nothing, dims)
Array{T,N}(nothing, dims)
Array{T}(missing, dims)
Array{T,N}(missing, dims)
julia> a = Array{Int32}(undef, 2)
2-element Vector{Int32}:
0
0
Core.isa 関数を使うことで、与えられた型であるかどうかを判定できる。Base.Vector は Core.Array{T,1} の別名であるため、比較する型が Core.Array でも真 (true) と判定される。また、スーパータイプである Base.AbstractVector でも真 (true) と判定される。
isa(x, type) -> Bool
型の判定を行う例を以下に示す。
julia> v = [1,2,3]
3-element Vector{Int64}:
1
2
3
julia> isa(v, Vector)
true
julia> isa(v, Array)
true
julia> isa(v, AbstractVector)
true
julia> isa(v, Matrix)
false
Core.isa 関数は「x isa type」のように、劣等演算子としても使用できる。
julia> v = [1,2,3]
3-element Vector{Int64}:
1
2
3
julia> v isa Vector
true
julia> v isa Array
true
julia> v isa AbstractVector
true
julia> v isa Matrix
false
値の範囲 (Base.UnitRange) から Base.Vector を生成する。
julia> v = collect(1:3)
3-element Vector{Int64}:
1
2
3
Core.Tuple を Base.Vector へ変換する。
julia> t = (1, 2, 3)
(1, 2, 3)
julia> v = collect(t)
3-element Vector{Int64}:
1
2
3
Base.deleteat! 関数を使うことで、指定した位置の要素を削除できる。
julia> v = ["foo", "bar", "baz"]
3-element Vector{String}:
"foo"
"bar"
"baz"
julia> deleteat!(v, 2)
2-element Vector{String}:
"foo"
"baz"
Base.falses 関数を使うことで、すべての要素が false (0) であるベクトルを生成できる。
julia> v = falses(3)
3-element BitVector:
0
0
0
Base.fill 関数を使うことで、すべての要素が同じ値であるベクトルを生成できる。
julia> v = fill(-1, 3)
3-element Vector{Int64}:
-1
-1
-1
Base.findall メソッドを使うことで、Base.Vector に含まれる true の要素だけを抽出することができる。
julia> v = [true, false, true, true]
4-element Vector{Bool}:
1
0
1
1
julia> findall(v)
3-element Vector{Int64}:
1
3
4
Base.findall メソッドを使うことで、Base.Vector に含まれる要素のうち、引数に渡した関数の戻り値が true になる要素だけを抽出することができる。
julia> v = [1, 2, 3, 4]
4-element Vector{Int64}:
1
2
3
4
julia> findall(isodd, v)
2-element Vector{Int64}:
1
3
julia> findall(iseven, v)
2-element Vector{Int64}:
2
4
Base.length 関数を使って、Base.Vector の要素数を取得できる。
julia> v = [1,2,3]
3-element Vector{Int64}:
1
2
3
julia> length(v)
3
Base.ones 関数を使うことで、すべての要素が 1 であるベクトルを生成できる。
julia> v = ones(Float32, 3)
3-element Vector{Float32}:
1.0
1.0
1.0
Base.pop! メソッドを使うことで、ベクトルの最後の要素を取り出せる。取り出した要素はベクトルから削除される。
julia> v = [1, 2, 3]
3-element Vector{Int64}:
1
2
3
julia> pop!(v)
3
julia> v
2-element Vector{Int64}:
1
2
Base.sort を使って、Base.Vector の要素を昇順にソート(並び替え)することができる。
julia> v = [3,2,1]
3-element Vector{Int64}:
3
2
1
julia> sort(v)
3-element Vector{Int64}:
1
2
3
降順にソートすることもできる。
julia> v = [1,2,3]
3-element Vector{Int64}:
1
2
3
julia> sort(v, rev = false)
3-element Vector{Int64}:
1
2
3
Base.sum 関数を使って、Base.Vector 各要素の合計値を求めることができる。
julia> sum([1, 2, 3])
6
Base.trues 関数を使うことで、すべての要素が true (1) であるベクトルを生成できる。
julia> v = trues(3)
3-element BitVector:
1
1
1
Base.zeros 関数を使うことで、すべての要素が 0 であるベクトルを生成できる。
julia> v = zeros(Float32, 3)
3-element Vector{Float32}:
0.0
0.0
0.0
Julia の REPL で ?
キーを押すと、HELP モードになる。HELP モードの REPL で Vector
と入力すると、ヘルプが表示される。
julia> ?
help?> Vector
search: Vector BitVector DenseVector StridedVector AbstractVector InvalidStateException
Vector{T} <: AbstractVector{T}
One-dimensional dense array with elements of type T, often used to represent a mathematical vector. Alias
for Array{T,1}.
See also empty, similar and zero for creating vectors.
──────────────────────────────────────────────────────────────────────────────────────────────────────────
Vector{T}(undef, n)
Construct an uninitialized Vector{T} of length n.
Examples
≡≡≡≡≡≡≡≡≡≡
julia> Vector{Float64}(undef, 3)
3-element Array{Float64, 1}:
6.90966e-310
6.90966e-310
6.90966e-310
──────────────────────────────────────────────────────────────────────────────────────────────────────────
Vector{T}(nothing, m)
Construct a Vector{T} of length m, initialized with nothing entries. Element type T must be able to hold
these values, i.e. Nothing <: T.
Examples
≡≡≡≡≡≡≡≡≡≡
julia> Vector{Union{Nothing, String}}(nothing, 2)
2-element Vector{Union{Nothing, String}}:
nothing
nothing
──────────────────────────────────────────────────────────────────────────────────────────────────────────
Vector{T}(missing, m)
Construct a Vector{T} of length m, initialized with missing entries. Element type T must be able to hold
these values, i.e. Missing <: T.
Examples
≡≡≡≡≡≡≡≡≡≡
julia> Vector{Union{Missing, String}}(missing, 2)
2-element Vector{Union{Missing, String}}:
missing
missing
JuliaLang.org contributors 2023. Julia Documentation
北見工業大学 2023. 集合