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.(延伸)对三维数组
代码中我们用的三维数组如下:
[ [[, , , , ], [, , , , , ], [, , , , ], [, ], [], []],
[[], [], []],
[],
[] ]
其中第一维和第二维都设置了为空的元素
删除三维列表中第二维为空的元素,代码如下:
#.删除三维列表中第二维为空的元素
oldlist=[[[, , , , ], [, , , , , ], [ , , , , ], [, ], [], []], [[], [], []],[],[]]
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]] ]
觉得我的博客对你有用的话请点个赞哦!
python如何删除二维或者三维数组/列表中某维的空元素的更多相关文章
- C语言malloc函数为一维,二维,三维数组分配空间
c语言允许建立内存动态分配区域,以存放一些临时用的数据,这些数据不必在程序的声明部分定义,也不必等到函数结束时才释放,而是需要时随时开辟,不需要时随时释放,这些数据存储在堆区.可以根据需要,向系统申请 ...
- [百度]数组A中任意两个相邻元素大小相差1,在其中查找某个数
一.问题来源及描述 今天看了July的微博,发现了七月问题,有这个题,挺有意思的. 数组A中任意两个相邻元素大小相差1,现给定这样的数组A和目标整数t,找出t在数组A中的位置.如数组:[1,2,3,4 ...
- (笔试题)数组A中任意两个相邻元素大小相差1,在其中查找某个数。
题目: 数组A中任意两个相邻元素大小相差1,现给定这样的数组A和目标整数t,找出t在数组A中的位置.如数组:[1,2,3,4,3,4,5,6,5],找到4在数组中的位置. 思路: 很明显,在数组中寻找 ...
- Python小白的发展之路之Python基础(二)【字符串、列表、集合、文件操作】
列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1.列表.元组操作 (1)列表 列表是可变的(mutable)——可以改变列表的内容,这不同于字符串和元组,字符串和元组都是不 ...
- python学习笔记(二)---for循环与操作列表
内容概要 for循环 range(start,end,step)函数 生成随机数列表 list()函数 将range()的结果整合到某个列表 列表的操作 切片(start: end :step) 元组 ...
- Python自学:第三章 弹出列表中任何位置处的元素
motorcycles = ["honda", "yamaha", "suzuki"] first_owned = motorcycles. ...
- python 判断两个列表中相同和不同的元素
背景: 在做接口自动化时,通常会判断接口返回中的数据信息,与数据库中返回的数据信息是否一致,比如:将接口返回信息的用户姓名存放到一个列表中,将数据库返回的用户姓名存放到另一个列表中,这时需要判断两个列 ...
- python列表中,多次追加元素
在列表中追加元素,可以使用append(),列表相加也可以用extend()函数,多次追加元素可以用“+”实现 l=[1,2,3,4,5] x=6 y=7 z=8 l=l+[x]+[y]+[z] pr ...
- python将一些朋友的姓名存储在一个列表中,访问该列表中的每个元素,从而将每个朋友的姓名都打印出来
""" 3-1 姓名: 将一些朋友的姓名存储在一个列表中,并将其命名为 names . 依次访问该列表中的每个元素,从而将每个朋友的姓名都打印出来. "&quo ...
随机推荐
- oop(面向对象语言的三大特征):封装,继承,多态; (抽象),函数绑定
封装/隐藏 : 通过类的访问限定符实现的 private public 继承的意义之一:代码的复用 类的继承是指在一个现有类的基础上去构建一个新的类,构造出来的新类被称为派生类(子类),现有 ...
- Java操作Jxl实现数据交互。三部曲——《第一篇》
Java操作Jxl实现.xsl及.xsls两种数据表格进行批量导入数据到SQL server数据库. 本文实现背景Web项目:前台用的框架是Easyui+Bootstrap结合使用,需要引入相应的Js ...
- hdu 5139 数据的离线处理
所谓的数据离线处理,就是将所有的输入数据全部读入后,在进行统一的操作,这样当然有好处,比如让你算好多数的阶层,但是输入的每个数是没有顺序的,其实跟可以线性的解决,但是由于没有顺序的输入,这样处理的话复 ...
- LCA - 求任意两点间的距离
There are n houses in the village and some bidirectional roads connecting them. Every day peole alwa ...
- C#图片采集软件 自动翻页 自动分类(收集美图必备工具)(一)
网站管理员希望将别人的整站数据下载到自己的网站里或者将别人网站的一些内容保存到自己的服务器上.从内容中抽取相关的字段,发布到自己的网站系统中.有时需要将网页相关的文件也保存到本地,如图片.附件等. 图 ...
- SpringMvc简单使用
SpringMvc框架的简单使用 第一步:导入依赖 <dependencies> <dependency> <groupId>org.springframework ...
- [bzoj2186] [洛谷P2155] [Sdoi2008] 沙拉公主的困惑
Description 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞票.房地产第一大户沙拉公主决定预测一下大富翁国现 ...
- [bzoj3527] [洛谷P3338] [Zjoi2014]力
Description 给出n个数qi,给出Fj的定义如下: \[ F_j=\sum\limits_{i<j} \frac{q_iq_j}{(i-j)^2} - \sum\limits_{i&g ...
- Python赋值没有返回值+笔试
>>> def test(): i = 1 return i=2 SyntaxError: invalid syntax 原因是python 中赋值语句没有返回值,这里不是C++
- Java解析XML文件的方式
在项目里,我们往往会把一些配置信息放到xml文件里,或者各部门间会通过xml文件来交换业务数据,所以有时候我们会遇到“解析xml文件”的需求.一般来讲,有基于DOM树和SAX的两种解析xml文件的方式 ...