如何将形状为(4,2,3)的3D列表写入CSV文件?
将3D列表写入CSV的实现方案
针对你提供的形状为(4, 2, 3)的3D列表,以下是几种符合常见CSV格式需求的实现方式,你可以根据目标格式选择:
方式1:展开为每行对应一个内层数组(带外层索引)
如果目标格式是每行包含外层分组序号+内层3个数值(共8行),可以用csv模块遍历写入:
import csv mylist=[[[1,2,3], [1,4,3]], [[1,8,3], [1,4,3]], [[1,3,1], [1,4,3]], [[1,0,3], [1,4,3]]] # 打开CSV文件并写入 with open('output.csv', 'w', newline='', encoding='utf-8') as f: writer = csv.writer(f) # 遍历外层分组,从1开始计数序号 for group_num, group in enumerate(mylist, start=1): # 遍历每组内的两个子列表,写入行 for sub_list in group: writer.writerow([group_num] + sub_list)
生成的CSV内容示例:
1,1,2,3 1,1,4,3 2,1,8,3 2,1,4,3 3,1,3,1 3,1,4,3 4,1,0,3 4,1,4,3
方式2:直接展开为纯数值行(无索引)
如果只需要将所有内层3元素数组按顺序写入(共8行3列),用numpy的reshape和savetxt更高效:
import numpy as np mylist=[[[1,2,3], [1,4,3]], [[1,8,3], [1,4,3]], [[1,3,1], [1,4,3]], [[1,0,3], [1,4,3]]] # 转换为numpy数组并重塑形状 arr = np.array(mylist).reshape(-1, 3) # 写入CSV,指定分隔符和整数格式 np.savetxt('output.csv', arr, delimiter=',', fmt='%d')
生成的CSV内容示例:
1,2,3 1,4,3 1,8,3 1,4,3 1,3,1 1,4,3 1,0,3 1,4,3
方式3:每组占一行(拼接两个子列表)
如果目标是每个外层分组占一行,将两个子列表拼接为6个数值(共4行),可以这样实现:
import csv mylist=[[[1,2,3], [1,4,3]], [[1,8,3], [1,4,3]], [[1,3,1], [1,4,3]], [[1,0,3], [1,4,3]]] with open('output.csv', 'w', newline='', encoding='utf-8') as f: writer = csv.writer(f) for group in mylist: # 拼接每组内的两个子列表为一行 writer.writerow(group[0] + group[1])
生成的CSV内容示例:
1,2,3,1,4,3 1,8,3,1,4,3 1,3,1,1,4,3 1,0,3,1,4,3
内容的提问来源于stack exchange,提问作者LearnerABC
相关产品推荐
相关产品推荐

