NumPy 中文教程

第一部分:基础认知与环境准备
第 1 章 全面认识 NumPy
第 2 章 开发环境搭建与验证
第二部分:核心对象 ——ndarray 数组
第 3 章 ndarray 数组基础
第 4 章 数组的形状与维度操作
第四部分:高级应用与数据处理
第 8 章 数组的排序、查找与去重
第 9 章 缺失值与异常值处理
第 10 章 随机数生成与抽样
第 11 章 文件读写与数据交互
第五部分:实战场景与落地应用
第 12 章 数值计算实战
第 13 章 数据分析实战
第六部分:优化进阶与问题解决
第 14 章 NumPy 性能优化
第 15 章 NumPy 进阶扩展
第 16 章 常见问题与解决方案

11.1 文本文件读写

NumPy文本文件读写完整教程:从读取到写入,新手入门指南

NumPy 中文教程

本教程详细介绍了NumPy中文本文件的读写操作,包括np.loadtxt()和np.savetxt()的使用方法、参数配置、格式控制、缺失值处理和数据类型指定,以及大文件的分块读取技巧。适合NumPy初学者快速上手。

推荐工具
PyCharm专业版开发必备

功能强大的Python IDE,提供智能代码补全、代码分析、调试和测试工具,提高Python开发效率。特别适合处理列表等数据结构的开发工作。

了解更多

NumPy文本文件读写教程:从入门到精通

1. 简介

NumPy(Numerical Python)是Python中用于科学计算的核心库,它提供了强大的多维数组对象和数据处理功能。文本文件是数据存储和交换的常见格式,NumPy通过np.loadtxt()np.savetxt()函数,使得读写文本数据变得简单高效。本教程将深入讲解这些功能,适合新手学习。

2. 纯文本读取:np.loadtxt()

np.loadtxt()函数用于从文本文件加载数据到NumPy数组。它默认假设数据以空格分隔,但可以通过参数灵活配置。

基本用法

import numpy as np

# 从文件data.txt读取数据
data = np.loadtxt('data.txt')
print(data)

参数配置详解

np.loadtxt()支持多种参数,以适应不同格式的文本文件。

  • delimiter: 指定分隔符,默认是任何空白字符(如空格、制表符)。例如,delimiter=','用于CSV文件。
  • skiprows: 跳过文件开头的行数,常用于忽略表头。
  • usecols: 指定要读取的列索引,从0开始。
  • dtype: 指定输出数组的数据类型,如dtype=floatdtype=np.int32
  • comments: 指定注释字符,默认为'#'。带注释的行将被忽略。
  • unpack: 如果为True,返回的数组会转置,方便处理多列数据。

示例:读取带分隔符和表头的文件

data = np.loadtxt('data.csv', delimiter=',', skiprows=1, dtype=float)

3. 文本写入:np.savetxt()

np.savetxt()函数用于将NumPy数组写入文本文件,支持自定义格式和分隔符。

基本用法

np.savetxt('output.txt', data)

格式控制参数

写入时可以通过参数控制输出格式,提高文件可读性。

  • fmt: 指定每个元素的格式字符串,例如fmt='%.2f'表示保留两位小数。
  • delimiter: 指定分隔符,默认为空格。
  • header: 添加文件头部字符串,常用于添加列名或注释。
  • footer: 添加文件尾部字符串。
  • comments: 指定注释字符,默认为'#',可与header/footer结合使用。

示例:写入带格式和表头的文件

np.savetxt('output.txt', data, fmt='%.3f', delimiter='\t', header='Data Output')

4. 缺失值处理与数据类型指定

在实际数据中,常会遇到缺失值,NumPy提供了处理机制。

缺失值处理

np.loadtxt()默认不支持缺失值;如果文件中有NaN或空值,可以结合dtype参数或后处理。推荐使用np.genfromtxt()处理复杂缺失情况,但为简化,这里展示基本方法。

示例:使用dtype和fill_value

# 假设文件中有缺失值,用-1填充
data = np.loadtxt('data.txt', dtype=float, filling_values=-1)

注意:filling_valuesnp.genfromtxt()的参数,loadtxt中可用missing或自定义解析,但较复杂。建议新手先确保数据完整。

数据类型指定

指定dtype可确保数据读取准确性,避免类型错误。

data = np.loadtxt('data.txt', dtype=np.int32)  # 读取为整数

5. 大文本文件的分块读取

对于大型文件(如GB级),一次性读取可能导致内存不足。NumPy没有内置分块功能,但可通过循环实现。

为什么需要分块读取?

分块读取将文件分成小块处理,节省内存,适合大数据集。

实现方法

使用np.loadtxt()skiprowsmax_rows参数模拟分块。

示例:分块读取大文件

chunk_size = 1000  # 每块行数
total_rows = 10000  # 假设总行数,实际中可能需要预先计算
for i in range(0, total_rows, chunk_size):
    data_chunk = np.loadtxt('large_file.txt', skiprows=i, max_rows=chunk_size)
    # 处理每个数据块,例如分析或保存
    print(f'Processed chunk starting at row {i}')

如果总行数未知,可以先读取文件头估算或使用其他库如Pandas辅助。

6. 总结与最佳实践

本教程覆盖了NumPy文本文件读写的核心内容,从基本操作到高级技巧。

关键点回顾:

  • np.loadtxt()用于读取,参数如delimiterdtype可定制化。
  • np.savetxt()用于写入,fmtdelimiter控制输出格式。
  • 缺失值处理需谨慎,可结合数据类型指定。
  • 大文件分块读取通过循环实现,避免内存溢出。

最佳实践建议:

  1. 读取时总是指定dtype,以确保数据一致性。
  2. 写入时使用合理的fmt和分隔符,方便后续读取。
  3. 处理大文件时,先测试小块数据,再扩展分块逻辑。
  4. 实践中多参考NumPy官方文档,获取最新参数信息。

通过本教程,希望你能掌握NumPy文本文件读写的基本技能,为进一步的数据分析打下基础。

开发工具推荐
Python开发者工具包

包含虚拟环境管理、代码格式化、依赖管理、测试框架等Python开发全流程工具,提高开发效率。特别适合处理复杂数据结构和算法。

获取工具包