【发布时间】:2019-09-20 18:26:26
【问题描述】:
如何从数组中删除一个或多个行和/或列?
【问题讨论】:
如何从数组中删除一个或多个行和/或列?
【问题讨论】:
合作:
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
删除单行(此处为第 2 行):
julia> newarray = array[1:end .!= 2, :]
3×4 Array{Int64,2}:
1 2 3 4
9 10 11 12
13 14 15 16
删除单个列(此处为第 3 列):
julia> newarray = array[:, 1:end .!= 3]
4×3 Array{Int64,2}:
1 2 4
5 6 8
9 10 12
13 14 16
删除单行单列(此处为第 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
删除多行(此处为第 2、4 行):
julia> newarray = array[setdiff(1:end, (2,4)), :]
2×4 Array{Int64,2}:
1 2 3 4
9 10 11 12
删除多列(此处为第 2、4 列):
julia> newarray = array[:, setdiff(1:end, (2,4))]
4×2 Array{Int64,2}:
1 3
5 7
9 11
13 15
要删除单行多列(此处为第 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
要删除多行和多列(此处为第 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
【讨论】:
newarray 更改为array 来将数组替换为编辑后的数组。这将创建一个经过编辑的“副本”并发布“原始”。
deleteat! 删除后没有任何副本。