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