Julia Base.findall

Julia の Base.findall は、コレクションの中から条件に合う要素を抽出するメソッドです。

目次

  1. 1 概要
  2. 2 引数
  3. 3 使用例
    1. 3.1 Core.Tuple
    2. 3.2 Core.NamedTuple
    3. 3.3 Base.Dict
    4. 3.4 Base.Matrix
    5. 3.5 Base.Vector
  4. 4 参考文献

1 概要

findall(A)
findall(f::Function, A)

2 引数

A
コレクションを指定する。以下に示す型を指定できる。
f
コレクションの各要素をチェックする関数を指定する。この関数は、true または false を戻り値として返す必要がある。この関数が true を返した要素のみ抽出される。

3 使用例

Base.findall メソッドの使用例を以下に示す。

3.1 Core.Tuple

Base.findall メソッドを使うことで、Core.Tuple に含まれる true の要素だけを抽出することができる。

julia> t = (true, false, true)
(true, false, true)

julia> findall(t)
2-element Vector{Int64}:
 1
 3

Base.findall メソッドを使うことで、Core.Tuple に含まれる要素のうち、引数に渡した関数の戻り値が true になる要素だけを抽出することができる。

julia> t = (5, 6, 7, 8)
(5, 6, 7, 8)

julia> findall(isodd, t)
2-element Vector{Int64}:
 1
 3

julia> findall(iseven, t)
2-element Vector{Int64}:
 2
 4

3.2 Core.NamedTuple

Base.findall メソッドを使うことで、Core.NamedTuple に含まれる true の要素だけを抽出することができる。

julia> nt = (a = true, b = false)
(a = true, b = false)

julia> findall(nt)
1-element Vector{Symbol}:
 :a

Base.findall メソッドを使うことで、Core.NamedTuple に含まれる要素のうち、引数に渡した関数の戻り値が true になる要素だけを抽出することができる。

julia> nt = (a = 1, b = 2, c = 3, d = 4)
(a = 1, b = 2, c = 3, d = 4)

julia> findall(isodd, nt)
2-element Vector{Symbol}:
 :a
 :c

julia> findall(iseven, nt)
2-element Vector{Symbol}:
 :b
 :d

3.3 Base.Dict

Base.findall メソッドを使うことで、Base.Dict に含まれる要素のうち、引数に渡した関数の戻り値が true になる要素だけを抽出することができる。

julia> d = Dict(:a => -1, :b => 0, :c => 1)
Dict{Symbol, Int64} with 3 entries:
  :a => -1
  :b => 0
  :c => 1

julia> findall(x -> x >= 0, d)
2-element Vector{Symbol}:
 :b
 :c

3.4 Base.Matrix

Base.findall メソッドを使うことで、Base.Matrix に含まれる true の要素だけを抽出することができる。

julia> m = [true false;true true]
2×2 Matrix{Bool}:
 1  0
 1  1

julia> findall(m)
3-element Vector{CartesianIndex{2}}:
 CartesianIndex(1, 1)
 CartesianIndex(2, 1)
 CartesianIndex(2, 2)

Base.findall メソッドを使うことで、Base.Matrix に含まれる要素のうち、引数に渡した関数の戻り値が true になる要素だけを抽出することができる。

julia> m = [1 2;3 4]
2×2 Matrix{Int64}:
 1  2
 3  4

julia> findall(isodd, m)
2-element Vector{CartesianIndex{2}}:
 CartesianIndex(1, 1)
 CartesianIndex(2, 1)

julia> findall(iseven, m)
2-element Vector{CartesianIndex{2}}:
 CartesianIndex(1, 2)
 CartesianIndex(2, 2)

3.5 Base.Vector

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

4 参考文献

JuliaLang.org contributors 2023. Julia Documentation