- NumPy 教程
- NumPy - 首页
- NumPy - 简介
- NumPy - 环境
- NumPy 数组
- NumPy - Ndarray 对象
- NumPy - 数据类型
- NumPy 创建和操作数组
- NumPy - 数组创建例程
- NumPy - 数组操作
- NumPy - 从现有数据创建数组
- NumPy - 从数值范围创建数组
- NumPy - 迭代数组
- NumPy - 数组重塑
- NumPy - 连接数组
- NumPy - 堆叠数组
- NumPy - 分割数组
- NumPy - 展平数组
- NumPy - 转置数组
- NumPy 索引和切片
- NumPy - 索引和切片
- NumPy - 高级索引
- NumPy 数组属性和操作
- NumPy - 数组属性
- NumPy - 数组形状
- NumPy - 数组大小
- NumPy - 数组步长
- NumPy - 数组元素大小
- NumPy - 广播
- NumPy - 算术运算
- NumPy - 数组加法
- NumPy - 数组减法
- NumPy - 数组乘法
- NumPy - 数组除法
- NumPy 高级数组操作
- NumPy - 交换数组轴
- NumPy - 字节交换
- NumPy - 副本和视图
- NumPy - 元素级数组比较
- NumPy - 过滤数组
- NumPy - 连接数组
- NumPy - 排序、搜索和计数函数
- NumPy - 搜索数组
- NumPy - 数组的并集
- NumPy - 查找唯一行
- NumPy - 创建日期时间数组
- NumPy - 二元运算符
- NumPy - 字符串函数
- NumPy - 数学函数
- NumPy - 统计函数
- NumPy - 矩阵库
- NumPy - 线性代数
- NumPy - Matplotlib
- NumPy - 使用 Matplotlib 绘制直方图
- NumPy - NumPy 的 I/O 操作
- NumPy 排序和高级操作
- NumPy - 数组排序
- NumPy - 沿轴排序
- NumPy - 使用花式索引排序
- NumPy - 结构化数组
- NumPy - 创建结构化数组
- NumPy - 操作结构化数组
- NumPy - 字段访问
- NumPy - 记录数组
- Numpy - 加载数组
- Numpy - 保存数组
- NumPy - 将值追加到数组
- NumPy - 交换数组的列
- NumPy - 向数组插入轴
- NumPy 处理缺失数据
- NumPy - 处理缺失数据
- NumPy - 识别缺失值
- NumPy - 删除缺失数据
- NumPy - 填充缺失数据
- NumPy 性能优化
- NumPy - 使用数组进行性能优化
- NumPy - 使用数组进行矢量化
- NumPy - 数组的内存布局
- Numpy 线性代数
- NumPy - 线性代数
- NumPy - 矩阵库
- NumPy - 矩阵加法
- NumPy - 矩阵减法
- NumPy - 矩阵乘法
- NumPy - 元素级矩阵运算
- NumPy - 点积
- NumPy - 矩阵求逆
- NumPy - 行列式计算
- NumPy - 特征值
- NumPy - 特征向量
- NumPy - 奇异值分解
- NumPy - 求解线性方程组
- NumPy - 矩阵范数
- NumPy 元素级矩阵运算
- NumPy - 求和
- NumPy - 求平均值
- NumPy - 求中位数
- NumPy - 求最小值
- NumPy - 求最大值
- NumPy 集合运算
- NumPy - 唯一元素
- NumPy - 交集
- NumPy - 并集
- NumPy - 差集
- NumPy 有用资源
- NumPy 编译器
- NumPy - 快速指南
- NumPy - 有用资源
- NumPy - 讨论
NumPy - 加载数组
在 NumPy 中加载数组
NumPy 加载数组指的是将外部文件或来源中的数据读取并加载到 NumPy 数组的过程。
此功能允许您处理存储在文件(如文本文件、二进制文件或其他格式)中的数据,并将这些数据引入 NumPy 环境以进行分析或操作。以下是 NumPy 中加载数组的常用方法:
- 从文本文件加载:使用 np.loadtxt() 或 np.genfromtxt() 等函数读取文本文件中的数据。
- 从二进制文件加载:使用 np.fromfile() 函数读取二进制文件中的数据。
- 从 .npy 文件加载:使用 np.load() 函数读取 NumPy 本机二进制格式(.npy 文件)中保存的文件中的数据。
从文本文件加载数组
在 NumPy 中从文本文件加载数组是将存储在纯文本文件中的数据导入到 NumPy 数组的常见操作。
NumPy 提供了np.loadtxt()函数和np.genfromtxt()函数来处理不同的文本文件格式和结构,从而轻松处理各种类型的基于文本的数据,它们是:
使用 np.loadtxt() 函数
np.loadtxt() 函数用于将文本文件中的数据读取到 NumPy 数组中。
此函数通常用于加载以表格格式组织的结构化数据,例如 CSV 文件或空格分隔的文件。它适用于每个行包含一行数字且所有行具有相同列数的数据文件。以下是语法:
numpy.loadtxt(fname, dtype=<type>, delimiter=<delimiter>, comments=<char>, skiprows=<num>, usecols=<cols>)
其中,
- fname:要读取的文件名或文件对象。
- dtype:结果数组的数据类型(默认为浮点数)。
- delimiter:分隔值的字符串或字符(例如,逗号、空格)。
- comments:指示注释开始的字符串(例如,#)。
- skiprows:要跳过的文件开头的行数。
- usecols:要读取的列的索引(例如,[0, 2] 读取第一列和第三列)。
示例
假设您有一个文本文件“data.txt”,其内容如下:
1 2 3 4 5 6 7 8 9
您可以使用 loadtxt() 函数将此数据加载到 NumPy 数组中,如下所示:
import numpy as np # Load data from a text file array_from_text = np.loadtxt('data.txt') print("Array loaded from text file:") print(array_from_text)
使用 np.genfromtxt() 函数
np.genfromtxt() 函数用于将文本文件中的数据读取到 NumPy 数组中。它对于处理更复杂的文本文件格式很有用,包括包含缺失值、混合数据类型和不规则结构的文件。以下是语法:
numpy.genfromtxt(fname, dtype=<type>, delimiter=<delimiter>, comments=<char>, skip_header=<num>, usecols=<cols>, filling_values=<value>, missing_values=<value>, converters=<dict>, encoding=<str>, names=<bool>)
其中,
- fname:要读取的文件名或文件对象。
- dtype:结果数组的数据类型。如果未指定,则默认为浮点数。
- delimiter:分隔值的字符串或字符(例如,CSV 使用逗号,空格分隔使用空格)。
- comments:指示注释开始的字符串(例如,#)。以该字符开头的行将被忽略。
- skip_header:要跳过的文件开头的行数(用于跳过标题)。
- usecols:要读取的列的索引。例如,[0, 2] 将只读取第一列和第三列。
- filling_values:用于缺失数据的数值。可以是标量或将列索引映射到填充值的字典。
- missing_values:文件中表示缺失数据的数值。可以是标量或数值列表。
- converters:将列转换为特定格式的函数的字典。
- encoding:用于读取文件的编码(默认为 None,使用系统默认编码)。
- names:如果为 True,则假定文件的首行为列名。
示例
在此示例中,我们使用 genfromtxt() 函数将“data.txt”文件加载到 NumPy 数组中:
import numpy as np # Load data from a text file array = np.genfromtxt('data.txt') print("Array loaded from text file:") print(array)
从二进制文件加载数组
在 NumPy 中从二进制文件加载数组涉及读取以二进制格式存储的数据,与文本格式相比,二进制格式通常更有效地进行存储和检索。
二进制文件包含原始数据,必须根据预期的格式和数据类型正确解释这些数据。NumPy 提供了np.fromfile()函数和np.load()函数来从二进制文件加载数组。
使用 np.fromfile() 函数
np.fromfile() 函数用于将二进制文件中的数据加载到 NumPy 数组中。此函数需要了解二进制文件的数据类型和格式。以下是语法:
numpy.fromfile(file, dtype=<type>, count=-1, offset=0)
其中,
- file:要读取的文件名或文件对象。
- dtype:结果数组的数据类型(例如,np.float32、np.int32)。
- count:要读取的项目数。如果为 -1,则读取所有数据。
- offset:要跳过的文件开头的字节数。
示例
假设您有一个二进制文件“data.bin”,其中包含“32 位”浮点数据。可以使用以下代码创建该文件:
import numpy as np # Create a binary file with float data data = np.array([1.1, 2.2, 3.3], dtype=np.float32) data.tofile('data.bin') print ('File created!!')
现在,要读取此二进制文件,请使用以下代码:
import numpy as np # Load data from a binary file array = np.fromfile('data.bin', dtype=np.float32) print("Array loaded from binary file:") print(array)
以下是上述代码的输出:
Array loaded from binary file: [1.1 2.2 3.3]
对 .npy 文件使用 np.load() 函数
NumPy 中的 np.load() 函数用于从 NumPy 本机二进制格式.npy或.npz文件中的文件加载数组或数据。此格式保留数组的元数据,例如其形状和数据类型。“.npz”格式用于以压缩格式存储多个数组。
以下是语法:
numpy.load(file, mmap_mode=None, allow_pickle=False, fix_imports=True, encoding='ASCII')
其中,
- file:要读取的文件名或文件对象。这可以是 .npy 文件(用于单个数组)或 .npz 文件(用于多个数组)。
- mmap_mode:如果非 None,则用于将文件内存映射,这允许读取大型数组而无需将整个文件加载到内存中。有效值为“r”、“r+”、“w+”等。
- allow_pickle:如果为 True,则允许加载使用 Python 的 pickle 格式保存的对象。使用此选项时要谨慎,因为它可以执行任意代码并构成安全风险。
- fix_imports:如果为 True,则在加载腌制数据时尝试检测并修复 Python 2 到 Python 3 的兼容性问题。
- encoding:加载 Python 3 文件时用于解码 Python 2 字符串数据的编码。默认为“ASCII”。
示例:加载 .npy 文件
这里,我们首先将数组保存到“.npy”文件格式:
import numpy as np # Create a NumPy array array = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.int32) # Save the array to a .npy file np.save('data.npy', array) print ("Saved!!")
现在,我们使用 NumPy 中的 load() 函数从“.npy”文件加载保存的数组:
import numpy as np # Load the array from the .npy file array = np.load('data.npy') print("Array loaded from .npy file:") print(array)
获得的输出如下所示:
Array loaded from .npy file: [[1 2 3] [4 5 6]]
示例:加载 .npz 文件
“.npz”格式用于将多个数组保存到单个压缩文件中。它创建一个 zip 归档文件,其中每个文件都是“.npy”文件,如以下示例所示:
import numpy as np # Save multiple arrays to a .npz file array1 = np.array([1, 2, 3]) array2 = np.array([[4, 5, 6], [7, 8, 9]]) np.savez('data.npz', array1=array1, array2=array2) # Load the arrays from the .npz file data = np.load('data.npz') # Access individual arrays using their keys array1_loaded = data['array1'] array2_loaded = data['array2'] print("Array 1 loaded from .npz file:") print(array1_loaded) print("Array 2 loaded from .npz file:") print(array2_loaded)
执行上述代码后,我们将获得以下输出:
Array 1 loaded from .npz file: [1 2 3] Array 2 loaded from .npz file: [[4 5 6] [7 8 9]]