用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为多维列表,且维度不统一。
因为列表x中x1,x2,x3的维度不一致,flatten()函数结果会报出警告,且结果不理想。
python3已经没有compiler包了,结果会报错。
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本人只学习了数据格式的降维,还有文本格式、字符串格式供大家参考。