添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

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