Julia Base.Vector

Julia の Base.Vector は、指定した型の要素を持つ1次元の密な配列で、Core.Array{T,1} の別名である。数学のベクトルを表すのによく使われる。

目次

  1. コレクション
  2. 定義
  3. ベクトルの生成
  4. リスト内包表記
  5. ベクトルの和
  6. Core.Array
  7. Core.isa
  8. Base.collect
  9. Base.deleteat!
  10. Base.falses
  11. Base.fill
  12. Base.findall
  13. Base.length
  14. Base.ones
  15. Base.pop!
  16. Base.sort
  17. Base.sum
  18. Base.trues
  19. Base.zeros
  20. ヘルプ
  21. 参考文献

1 コレクション

Base.Vector はコレクションの一種である。Julia 言語には、以下に示すコレクションがある。

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 は、一般的に「ベクトル」と呼ばれる。

2 定義

Vector{T} <: AbstractVector{T}

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 = [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

4 リスト内包表記

リスト内包表記とは、既存のリストから新たなリストを作成する表記法であり、数学における集合の内包的記法に準拠している。

集合の表し方には「外延的」と「内包的」という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

5 ベクトルの和

ベクトルの和
Figure 1. ベクトルの和
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

6 Core.Array

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)
T
要素の型
N
配列の次元
undef
要素の初期値を undef とする。
julia> a = Array{Int32}(undef, 2)
2-element Vector{Int32}:
 0
 0
nothing
要素の初期値を nothing とする。要素の型 (T) に Core.Nothing を含める必要がある。
missing
要素の初期値を missing とする。要素の型 (T) に Base.Missing を含める必要がある。
dims
各次元の要素数

7 Core.isa

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

8 Base.collect

値の範囲 (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

9 Base.deleteat!

Base.deleteat! 関数を使うことで、指定した位置の要素を削除できる。

julia> v = ["foo", "bar", "baz"]
3-element Vector{String}:
 "foo"
 "bar"
 "baz"

julia> deleteat!(v, 2)
2-element Vector{String}:
 "foo"
 "baz"

10 Base.falses

Base.falses 関数を使うことで、すべての要素が false (0) であるベクトルを生成できる。

julia> v = falses(3)
3-element BitVector:
 0
 0
 0

11 Base.fill

Base.fill 関数を使うことで、すべての要素が同じ値であるベクトルを生成できる。

julia> v = fill(-1, 3)
3-element Vector{Int64}:
 -1
 -1
 -1

12 Base.findall

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

13 Base.length

Base.length 関数を使って、Base.Vector の要素数を取得できる。

julia> v = [1,2,3]
3-element Vector{Int64}:
 1
 2
 3

julia> length(v)
3

14 Base.ones

Base.ones 関数を使うことで、すべての要素が 1 であるベクトルを生成できる。

julia> v = ones(Float32, 3)
3-element Vector{Float32}:
1.0
1.0
1.0

15 Base.pop!

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

16 Base.sort

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

17 Base.sum

Base.sum 関数を使って、Base.Vector 各要素の合計値を求めることができる。

julia> sum([1, 2, 3])
6

18 Base.trues

Base.trues 関数を使うことで、すべての要素が true (1) であるベクトルを生成できる。

julia> v = trues(3)
3-element BitVector:
 1
 1
 1

19 Base.zeros

Base.zeros 関数を使うことで、すべての要素が 0 であるベクトルを生成できる。

julia> v = zeros(Float32, 3)
3-element Vector{Float32}:
 0.0
 0.0
 0.0

20 ヘルプ

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

21 参考文献

JuliaLang.org contributors 2023. Julia Documentation

北見工業大学 2023. 集合