Python中如何将长输出完整打印到文件且不显示省略号?
解决大数组写入TXT时出现省略号的问题
当你将大规模numpy数组转换为字符串时,numpy默认会截断输出以节省空间,这就是文件中出现省略号的原因。可以通过以下几种方式解决:
方法1:全局修改numpy打印选项
在写入文件前,设置numpy的打印阈值为无穷大,确保所有元素都会被完整输出:
import numpy as np # 配置numpy不截断数组输出 np.set_printoptions(threshold=np.inf) with open('satinal22.txt', 'w') as f: for i in range(len(corpus)): f.write(str(final_output[i].toarray()) + '\n') # 添加换行符让每个样本单独占一行
方法2:使用np.array2string()指定完整输出
如果不想全局修改numpy配置,可以在转换字符串时单独指定参数,仅针对当前数组生效:
with open('satinal22.txt', 'w') as f: for i in range(len(corpus)): arr = final_output[i].toarray() # 转换为无截断的完整字符串 arr_str = np.array2string(arr, threshold=np.inf) f.write(arr_str + '\n')
方法3:使用np.savetxt()直接写入(大规模数据更高效)
针对大规模数据,直接用numpy的savetxt函数写入会更高效,无需循环转换字符串:
# 将稀疏矩阵转换为密集数组 dense_output = final_output.toarray() # 写入文件,可指定输出格式(例如保留6位小数) np.savetxt('satinal22.txt', dense_output, fmt='%.6f')
注意:如果数据维度极大,转换为密集数组可能占用较多内存,此时可以考虑逐行写入,或者使用scipy.sparse.save_npz先保存稀疏矩阵(若后续无需纯文本格式)。
内容的提问来源于stack exchange,提问作者Rozzi
相关产品推荐
相关产品推荐

