Numpy fromfile() 函数
Numpy fromfile() 函数用于将数据从二进制或文本文件读取到 NumPy 数组中。该函数可以高效地读取已知数据类型的二进制数据,或解析简单格式的文本文件,具体取决于指定的模式。使用 numpy.tofile() 方法写入的数据通常可以使用此函数读回,前提是数据格式匹配。
语法
以下是 Numpy fromfile() 函数的语法 -
numpy.fromfile(file, dtype=float, count=-1, sep='', offset=0, like=None)
参数
以下是 Numpy fromfile() 函数的参数 -
- file:要读取的文件或类似文件的对象。这可以是表示文件路径的字符串,也可以是打开的文件对象。
- dtype(可选):返回数组的数据类型。默认情况下,它设置为 float,但可以指定为任何 NumPy dtype,例如 int、float32 等。
- count(可选):要读取的项目数。如果为 -1(默认值),则将读取文件中的所有项目。
- sep(可选):从文本文件读取时使用的分隔符。空字符串 ('') 表示二进制模式。字符串(例如逗号或空格)表示文本模式。
- offset(可选):相对于文件当前位置的偏移量(以字节为单位)。默认情况下,偏移量被赋值为 0。仅适用于二进制文件。
- like(可选):允许创建一个与输入对象类似的数组,但使用现有的类数组对象(例如另一个 NumPy 数组)。
返回值
该函数返回一个 NumPy 数组,其中包含从文件读取的数据。
示例
以下是使用 Numpy fromfile() 函数从文件读取二进制数据的基本示例 -
import numpy as np # 为示例创建一个二进制文件 data = np.array([11, 22, 33, 44], dtype=np.int32) data.tofile('example_data.bin') # 现在使用 numpy.fromfile() 读取二进制数据 read_data = np.fromfile('example_data.bin', dtype=np.int32) print("二进制数据:", read_data)
输出
以下是上述代码的输出 -
二进制数据: [11 22 33 44]
示例:读取文本数据
在下面的示例中,我们使用 numpy.fromfile() 函数将文本文件中的数据读取到 NumPy 数组中 -
import numpy as np # 为示例创建一个文本文件 with open('example_data.txt', 'w') as file: file.write('85 25 15 24 9') # 使用 numpy.fromfile() 读取文本数据 read_data = np.fromfile('example_data.txt', dtype=np.float64, sep=' ') print("文本数据:", read_data)
输出
以下是上述代码的输出 -
文本数据: [85. 25. 15. 24. 9.]
示例:读取特定数量的项目
我们可以指定 count 参数来限制从文件中读取的项目数量。在以下示例中,我们仅从二进制文件中读取前 4 个元素 -
import numpy as np # 为示例创建二进制文件 data = np.array([18, 80, 24, 99, 56, 45, 79, 31], dtype=np.int32) data.tofile('example_data.bin') # 使用 numpy.fromfile() 仅读取前 4 个元素 read_data = np.fromfile('example_data.bin', dtype=np.int32, count=4) print("读取前 4 个元素:", read_data)
输出
以下是上述代码的输出 -
读取前 4 个元素:[18 80 24 99]
示例:二进制模式 vs. 文本模式
当 sep 参数为空字符串 (sep='') 时,文件将以二进制模式读取。当 sep 指定为字符(例如空格或逗号)时,文件将以文本模式读取。
在下面的示例中,我们使用 numpy.fromfile() 演示了二进制模式和文本模式读取之间的区别 -
import numpy as np # 写入一些二进制数据 data = np.array([56, 29, 66, 89, 77], dtype=np.int32) data.tofile('binary_data.bin') # 以二进制模式读取 binary_read = np.fromfile('binary_data.bin', dtype=np.int32) print("以二进制模式读取:", binary_read) # 写入一些文本数据 with open('text_data.txt', 'w') as file: file.write('45, 77, 25, 19, 85, 96') # 以文本模式读取 text_read = np.fromfile('text_data.txt', dtype=np.int32, sep=',') print("以文本模式读取:", text_read)
输出
以下是上述代码的输出 -
以二进制模式读取:[56 29 66 89 77] 以文本模式读取:[45 77 25 19 85 96]
numpy_array_creation_routines.html