Python numpy 入门系列 21 文件
1 NumPy 数组的二进制存取
NumPy 提供了专门的函数 save() 和 load(),用来保存和读取 NumPy 数组的二进制文件。这种方式高效且适合大规模数据的存储。
1.1 保存数组为二进制文件
save() 函数将 NumPy 数组保存为 .npy 格式的文件。该格式存储的是数组的二进制数据,读取和写入速度较快。
import numpy as np # 创建一个数组 arr = np.array([1, 2, 3, 4, 5]) # 将数组保存为二进制文件 np.save('array.npy', arr) print("数组已保存为 'array.npy'")
1.2 从二进制文件读取数组
使用 load() 函数可以将之前保存的 .npy 文件读取回 NumPy 数组。
import numpy as np
# 从二进制文件读取数组 loaded_arr = np.load('array.npy') print("从文件读取的数组:", loaded_arr)
1.3 保存和读取多个数组
当需要保存多个数组时,NumPy 提供了 savez() 函数,可以将多个数组保存到一个压缩文件中,并使用键值对的形式进行访问。
import numpy as np
# 保存多个数组到一个文件 arr1 = np.array([1, 2, 3]) arr2 = np.array([4, 5, 6]) np.savez('arrays.npz', array1=arr1, array2=arr2) print("多个数组已保存为 'arrays.npz' 文件") # 从文件读取多个数组 data = np.load('arrays.npz') print("从文件读取的数组1:", data['array1']) print("从文件读取的数组2:", data['array2'])
2 NumPy 与文本文件操作
除了二进制文件,文本文件也是非常常用的数据存储方式,尤其是 CSV(Comma-Separated Values,逗号分隔值)文件。NumPy 提供了 savetxt() 和 loadtxt() 函数,用于处理文本文件。
2.1 保存数组为文本文件
np.savetxt() 函数允许将数组保存为文本文件,可以指定分隔符(如逗号、空格等),适合导出数据供人类阅读或用于外部工具处理。
import numpy as np
# 创建二维数组 arr = np.array([[1.5, 2.3, 3.1], [4.5, 5.2, 6.8]]) # 将数组保存为文本文件,使用逗号分隔 np.savetxt('array.txt', arr, delimiter=',') print("数组已保存为 'array.txt'")
2.2 从文本文件读取数组
使用 np.loadtxt() 可以从文本文件中读取数据,并将其转换为 NumPy 数组。这个函数非常适合读取格式化的表格数据。
import numpy as np
# 从文本文件读取数组 loaded_txt_arr = np.loadtxt('array.txt', delimiter=',') print("从文本文件读取的数组:\n", loaded_txt_arr)
2.3 CSV 文件的读写
CSV 文件是常见的数据存储格式,尤其在数据分析和机器学习领域。savetxt() 和 loadtxt() 也可以用来处理 CSV 文件。
import numpy as np
# 保存数组为 CSV 文件 np.savetxt('array.csv', arr, delimiter=',', header='Col1,Col2,Col3') print("数组已保存为 'array.csv'") # 从 CSV 文件读取数组 loaded_csv_arr = np.loadtxt('array.csv', delimiter=',', skiprows=1) print("从 CSV 文件读取的数组:\n", loaded_csv_arr)
3 使用 genfromtxt() 读取含缺失数据的文件
在实际的数据处理中,文本文件可能包含缺失数据(例如某些列或行为空值)。genfromtxt() 函数是一个更强大的函数,它能够处理这些缺失数据并自动将其转为指定的缺失值。
3.1 读取含缺失数据的文件
import numpy as np
# 从含有缺失值的文件读取数据 data_with_missing = np.genfromtxt('missing_data.csv', delimiter=',', filling_values=-999) print("处理缺失值的数据:\n", data_with_missing)
在此示例中,filling_values=-999 参数将缺失值替换为 -999。我们也可以通过 dtype 参数指定不同的数据类型。
4 使用 Pandas 和 NumPy 协同处理文件
虽然 NumPy 能够处理文本和二进制文件,但在处理大型数据集和复杂的 CSV 文件时,Pandas 提供了更强大的功能。Pandas 数据结构(如 DataFrame)与 NumPy 数组之间可以相互转换。
4.1 使用 Pandas 读取 CSV 文件
Pandas 提供了 read_csv() 函数来读取 CSV 文件,并且可以直接将其转换为 NumPy 数组。
import numpy as np
import pandas as pd # 使用 Pandas 读取 CSV 文件 df = pd.read_csv('data.csv') # 将 Pandas DataFrame 转换为 NumPy 数组 np_array = df.to_numpy() print("转换为 NumPy 数组:\n", np_array)
4.2 将 NumPy 数组保存为 CSV 文件
Pandas 也可以将 NumPy 数组转换为 DataFrame,然后保存为 CSV 文件。
import numpy as np
# 将 NumPy 数组转换为 DataFrame 并保存为 CSV 文件 df = pd.DataFrame(arr) df.to_csv('saved_data.csv', index=False) print("NumPy 数组已保存为 CSV 文件")
REF
https://zhuanlan.zhihu.com/p/1107698156
https://download.csdn.net/blog/column/11191307/119647570
https://www.jianshu.com/p/f114783a0a54
原文链接:https://blog.csdn.net/imdeity/article/details/141942153