一、问题的提出
用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'])#数据转化为数

本文介绍了在Python3中处理不规则多维列表以进行数据分析的问题。作者分享了一种有效的方法,通过定义flatten函数递归地扁平化列表,并使用numpy和pandas进行数据重塑和数据框创建。该方法适用于维度不一致的列表,解决了flatten()函数和过时模块的局限性。
最低0.47元/天 解锁文章
183

被折叠的 条评论
为什么被折叠?



