python 多维不规则列表转化为1维列表

一、问题的提出

用python做数据处理的时候,出现很多不规则的列表,无法直接做数据分析,希望转化为1维列表。在网上找了多种方法,无果,后在知。乎。上找到解决方案,特此总结。

x1=[[1],[2]]
x2=[[4],[5],[6]]
x3=[[7],[8],[9],[10]]
x=[x1,[x2],[x3]]
print(x)

[[[1], [2]], [[[4], [5], [6]]], [[[7], [8], [9], [10]]]]

如上述代码段所示:x为多维列表,且维度不统一。

二、解决方法

1.错误的解决方案:

(1)flatten()函数。

因为列表x中x1,x2,x3的维度不一致,flatten()函数结果会报出警告,且结果不理想。

(2)from compiler.ast import flatten

python3已经没有compiler包了,结果会报错。

2.正确解决方案:

def flatten(a):
    for each in a:
        if not isinstance(each, list):
            yield each
        else:
            yield from flatten(each)

if __name__ == "__main__":
    x=x
    y=list(flatten(x))#此步骤为降维的最后一步
    y=np.reshape(y,(201392,20))#重新组织数据结构,201392,20表示数据的行数和列数
    y=pd.DataFrame(np.array(y),columns=['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20'])#数据转化为数据框,且命名列标题
    
    print(y.head(10))#数据量过大,只打印前10行数据预览

三、参考文献

如何将多维list降到一维,使用环境为python3? - 知乎需要降维的列表大概是这样的,希望能够实现成【562,678,723,.....】,用flatten()的话只能降一级,网上查…https://www.zhihu.com/question/63739026本人只学习了数据格式的降维,还有文本格式、字符串格式供大家参考。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值