🔖

Julia言語の行列における値取得方法について

2023/05/10に公開

beginとend、線形インデックス、範囲指定、フィルタリングについて調べました。

やってみた

module Matrix
using Test

function main()
    @testset "beginとendについて" begin
        matrix = [
            1 2 3
            4 5 6
            7 8 9
        ]

        # 添字は、1から始まる。
        @test matrix[1, 1] == 1
        @test matrix[begin, begin] == 1

        @test matrix[3, 3] == 9
        @test matrix[end, end] == 9
    end

    @testset "線形インデックスについて" begin
        matrix = [
            1 2
            3 4
            5 6
        ]

        # 多次元配列は、列指向である。
        @test matrix[1] == 1
        @test matrix[2] == 3
        @test matrix[3] == 5
        @test matrix[4] == 2
        @test matrix[5] == 4
        @test matrix[6] == 6
    end

    @testset "範囲指定について" begin
        matrix = [
            1 2 3
            4 5 6
            7 8 9
        ]

        @test matrix[1:2, 1] == [1, 4]
        @test matrix[:, 1] == [1, 4, 7]

        @test matrix[1, 1:2] == [1, 2]
        @test matrix[1, :] == [1, 2, 3]

        @test matrix[1:2, 1:2] == [1 2; 4 5]
    end

    @testset "フィルタリングについて" begin
        matrix = [
            1 2 3
            4 5 6
            7 8 9
        ]

        # 値は、線形インデックスの順番で返される。
        @test matrix[matrix.<5] == [1, 4, 2, 3]
        @test matrix[matrix.>5] == [7, 8, 6, 9]
    end
end
end

if abspath(PROGRAM_FILE) == @__FILE__
    using .Matrix

    Matrix.main()
end

Discussion