使用Python查看.npz/.npy文件时如何显示全部数组元素?
解答你的NumPy与MNIST npz文件疑问
1. 为什么np.load返回<numpy.lib.npyio.NpzFile object>?
.npz是NumPy的压缩归档文件,本质是包含多个.npy单数组存储格式文件的压缩包。当你用np.load()打开.npz文件时,返回的NpzFile对象是一个类字典容器,里面存储着数据集里各个数组的键值对(比如MNIST里的训练集、测试集数据和标签)。
你可以通过data.files查看这个容器里的所有键:
import numpy as np data = np.load("C:/mnist.npz") print(data.files) # 输出示例:['x_train', 'y_train', 'x_test', 'y_test']
2. 为什么打印数组时显示[...]而非完整内容?
这是NumPy的默认优化行为:当数组元素数量过多时,为了避免控制台被海量输出淹没,NumPy会自动截断数组,用[...]代替中间的大部分元素。比如MNIST的y_test有10000个元素,远超NumPy默认的打印阈值,所以会被截断显示。
3. 如何查看.npz和.npy文件的所有元素?
针对.npz文件:
先通过data.files确认所有数组的键,再用以下方法查看完整数组:
方法1:修改NumPy打印设置(全局生效)
通过np.set_printoptions()关闭数组截断:
import numpy as np # 设置阈值为无穷大,让NumPy打印所有元素 np.set_printoptions(threshold=np.inf) data = np.load("C:/mnist.npz") print(data['y_test']) # 现在会显示全部10000个标签元素
⚠️ 注意:如果是x_test这类高维大数组(比如(10000, 28, 28)),打印全部内容会占用大量控制台资源,甚至卡顿,建议只对标签这类小数组使用此方法。
方法2:临时打印或转成Python列表
不想全局修改设置的话,可以临时转成Python列表打印(同样注意大数组的性能问题):
print(data['y_test'].tolist())
或者先预览部分元素:
print(data['y_test'][:100]) # 打印前100个元素 print(data['y_test'][-100:]) # 打印后100个元素
针对.npy文件:
.npy文件存储单个NumPy数组,直接np.load()后得到数组对象,同样可以用上面的方法修改打印设置或转列表查看完整内容:
import numpy as np np.set_printoptions(threshold=np.inf) arr = np.load("your_file.npy") print(arr)
内容的提问来源于stack exchange,提问作者ONION
相关产品推荐
相关产品推荐

