如何在Jupyter Notebook中完整打印无制表符的50×32数值数据集?
解决方案
嘿,这问题我熟!我来给你捋捋怎么解决~你遇到的问题本质上是两个:一是NumPy默认会截断大数组的打印输出,二是Pandas读取空格分隔的文件时没指定正确的分隔符,导致输出出现奇怪的制表符( )。下面给你两种针对性的解决办法:
方法一:用NumPy实现无截断打印
NumPy默认对大数组的打印会做截断处理,你只需要修改它的打印配置,让它显示所有元素和完整行即可:
import numpy as np # 配置NumPy打印选项:不截断元素,不换行截断 np.set_printoptions(threshold=np.inf, linewidth=np.inf) # 加载数据并打印 p = np.loadtxt('dataset\\Pos0.txt') print(f"数据形状:{np.shape(p)}\n") print(p)
threshold=np.inf:告诉NumPy不要截断任何元素,全部显示linewidth=np.inf:让NumPy在打印时不会因为行太长而自动换行,保持每行的完整数值序列
方法二:用Pandas正确读取并打印
你之前用Pandas时出现 ,是因为pd.read_csv默认用逗号作为分隔符,但你的文件是空格分隔的,所以Pandas把整行内容当成了单个列,打印时就会出现奇怪的制表符。只需要指定正确的分隔符,再配合显示配置就可以解决:
import pandas as pd # 读取空格分隔的文件:用sep='\s+'匹配一个或多个连续空格,header=None表示文件无表头 df = pd.read_csv('dataset\\Pos0.txt', sep='\s+', header=None) # 设置显示配置:显示所有50行和32列 pd.set_option('display.max_rows', 50) pd.set_option('display.max_columns', 32) # 可选:让列标题居中,数值显示更整齐 pd.set_option('colheader_justify', 'center') # 打印数据 print(df)
这样读取后,Pandas会正确识别32列数值,打印时既不会截断行列,也不会出现多余的制表符啦~
内容的提问来源于stack exchange,提问作者Nelson
相关产品推荐
相关产品推荐

