栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python 删除三维列表特定行列页的元素

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python 删除三维列表特定行列页的元素

这个是和《Python 取三维列表特定行列页的元素》一起写的,因为最近处理数据涉及到三维list的存取问题,在python 中没有找到更为合适的数据结构,不得已采用list。这个函数主要利用了python 浅拷贝的特性,有时候浅拷贝会带来灾难,但是有时候浅拷贝会让事情变得如此简单。

def rmDataFrom3list(Data,a=[],b=[],c=[]):
    """
    remove the specfic elements of specfic raw, cloum, page in 3D-list.
    
    > @param[in] data:          The 3D-list
    > @param[in] a:             The raw index
    > @param[in] b:             The column indx
    > @param[in] c:             The page indx
    return:     
    < @param[out] Data          the 3D-list after remove the elements
    """
    z=len(Data)             #page
    h=len(Data[0])          #raw
    l=len(Data[0][0])       #column
    tmp1=[]
    tmp2=[]
    if len(a)==0:
        a=list(range(0,h))
    if len(b)==0:
        b=list(range(0,l))
    if len(c)==0:
        c=list(range(0,z))
    a=list(reversed(a))
    b=list(reversed(b))
    c=list(reversed(c))
    for i in c:
        hldata=Data[i]
        for j in a:
            ldata=hldata[j]
            for k in b:
                del(ldata[k])
    return Data

使用示例:

c=[[[111,121,131,141],
[211,221,231,241],
[311,321,331,341]],
[[112,122,132,142],
[212,222,232,242],
[312,322,332,342]],
[[113,123,133,143],
[213,223,233,243],
[313,323,333,343]]]
print(c)
d=gr.rmDataFrom3list(c,[0,1,2],[2],[0,1,2])
print(d)

返回结果:

[[[111, 121, 141], 
[211, 221, 241], 
[311, 321, 341]], 
[[112, 122, 142], 
[212, 222, 242], 
[312, 322, 342]], 
[[113, 123, 143], 
[213, 223, 243], 
[313, 323, 343]]]

样例数据是一个3*4*33行4列3页的列表。删除的元素是每一页每一行第三列的元素。

它对应的matlab的功能是m(i,j,k)=[](i,j,k可以是切片)。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/445772.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号