zoukankan      html  css  js  c++  java
  • python如何删除二维或者三维数组/列表中某维的空元素

    如题,个人在使用python进行数据预处理过程中出现的问题,抽象成删除三维列表中某维为空的问题。

     

    一.首先来看一下三维数组/列表的结构

    仔细看下图就会很清楚了:

    轴0即是去除第一个外括号后第一层(我把它称做第一维)有四大块;

    对轴1则是对每一块来说,去掉大块的括号后的四小横条(我把它称作第二维);

    对轴2则是对每一条来说,去掉小条的括号后的每一个数(从外往里数第三层括号,我就叫做第三维)

        

     

    二.代码

    1.删除二维数组中为空的元素则比较简单:

    oldlist=[[1, 1, 1, 1, 1],  [1, 1, 1, 1, 2],  [2, 2, 2, 2, 4, 4], [ 8, 8, 8, 8, 8],  [16, 16], [], [] , []]
    newlist=[x for x in oldlist if x] #删除空列表[]
    print(newlist)

    结果如下:

    [[1, 1, 1, 1, 1],  [1, 1, 1, 1, 2],  [2, 2, 2, 2, 4, 4], [ 8, 8, 8, 8, 8],  [16, 16]]

     

    2.(延伸)对三维数组

    代码中我们用的三维数组如下:

    [ [[1, 1, 1, 1, 1], [2, 2, 2, 2, 4, 4], [8, 8, 8, 8, 8], [16, 16], [], []],
      [[111], [333], [444]], 
      [], 
      []  ]

    其中第一维和第二维都设置了为空的元素

     

    删除三维列表中第二维为空的元素,代码如下:

    #1.删除三维列表中第二维为空的元素
    oldlist=[[[1, 1, 1, 1, 1],  [2, 2, 2, 2, 4, 4], [ 8, 8, 8, 8, 8],  [16, 16], [], []],  [[111], [333], [444]],[],[]]
    new1=[]
    new2=[]
    def dellist(oldlist):
        for sam in oldlist:
            new1 = []
            for x in sam:
                if x:
                    new1.append(x)
            new2.append(new1)
        return new2
    
    
    print(dellist(oldlist))

    结果如下:

    [ [[1, 1, 1, 1, 1], [2, 2, 2, 2, 4, 4], [8, 8, 8, 8, 8], [16, 16]], [[111], [333], [444]], [], []]
    

     

    若要想把第一维也为空的元素耶删除,加上一行即可:

    oldlist=[[[1, 1, 1, 1, 1],  [2, 2, 2, 2, 4, 4], [ 8, 8, 8, 8, 8],  [16, 16], [], []],  [[111],[333],[444]],[],[]]
    new1=[]
    new2=[]
    def dellist(oldlist):
        for sam in oldlist:
            if sam:
                new1 = []
                for x in sam:
                    if x:
                        new1.append(x)
                new2.append(new1)
        return new2
    
    print(dellist(oldlist))

    结果如下:

    [  [[1, 1, 1, 1, 1], [2, 2, 2, 2, 4, 4], [8, 8, 8, 8, 8], [16, 16]], 
       [[111], [333], [444]]  ]

     

    觉得我的博客对你有用的话请点个赞哦!

  • 相关阅读:
    461. Hamming Distance
    342. Power of Four
    326. Power of Three
    368. Largest Divisible Subset java solutions
    95. Unique Binary Search Trees II java solutions
    303. Range Sum Query
    160. Intersection of Two Linked Lists java solutions
    88. Merge Sorted Array java solutions
    67. Add Binary java solutions
    14. Longest Common Prefix java solutions
  • 原文地址:https://www.cnblogs.com/yh-blog/p/10588208.html
Copyright © 2011-2022 走看看