朱莉娅:从数组或矩阵中删除行和列

Jef*_*off 5 arrays matrix julia

如何从数组中删除一个或多个行和/或列?

Jef*_*off 5

使用:

julia> array = [1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16]
4×4 Array{Int64,2}:
  1   2   3   4
  5   6   7   8
  9  10  11  12
 13  14  15  16
Run Code Online (Sandbox Code Playgroud)

要删除单行(此处是第2行):

julia> newarray = array[1:end .!= 2, :]
3×4 Array{Int64,2}:
  1   2   3   4
  9  10  11  12
 13  14  15  16
Run Code Online (Sandbox Code Playgroud)

要删除单个列(此处为第3列):

julia> newarray = array[:, 1:end .!= 3]
4×3 Array{Int64,2}:
  1   2   4
  5   6   8
  9  10  12
 13  14  16
Run Code Online (Sandbox Code Playgroud)

要删除单行和单列(此处是第2行,第3列):

julia> newarray = array[1:end .!= 3, 1:end .!= 3]
3×3 Array{Int64,2}:
  1   2   4
  5   6   8
 13  14  16
Run Code Online (Sandbox Code Playgroud)

要删除多行(此处是第2、4行):

julia> newarray = array[setdiff(1:end, (2,4)), :]
2×4 Array{Int64,2}:
 1   2   3   4
 9  10  11  12
Run Code Online (Sandbox Code Playgroud)

要删除多个列(此处为第2、4列):

julia> newarray = array[:, setdiff(1:end, (2,4))]
4×2 Array{Int64,2}:
  1   3
  5   7
  9  11
 13  15
Run Code Online (Sandbox Code Playgroud)

要删除单行和多列(此处是第4行以及第3、4列):

julia> newarray = array[1:end .!= 4, setdiff(1:end, (3,4))]
3×2 Array{Int64,2}:
 1   2
 5   6
 9  10

# or

julia> newarray = array[setdiff(1:end, 4), setdiff(1:end, (3,4))]
3×2 Array{Int64,2}:
 1   2
 5   6
 9  10

# or
julia> newarray = array[setdiff(1:end, (4,)), setdiff(1:end, (3,4))]
3×2 Array{Int64,2}:
 1   2
 5   6
 9  10
Run Code Online (Sandbox Code Playgroud)

要删除多个行和列(此处为第1、2行和第3、4列):

julia> newarray = array[setdiff(1:end, (1,2)), setdiff(1:end, (3,4))]
2×2 Array{Int64,2}:
  9  10
 13  14
Run Code Online (Sandbox Code Playgroud)