代码之家  ›  专栏  ›  技术社区  ›  Jeffrey Sarnoff

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

  •  1
  • Jeffrey Sarnoff  · 技术社区  · 6 年前

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

    1 回复  |  直到 6 年前
        1
  •  7
  •   Jeffrey Sarnoff    6 年前

    与以下机构合作:

    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
    
    推荐文章