NumPy Ndarray对象

栏目: numpy 发布时间:2024-12-02

NumPy 的核心对象是 ndarray(N 维数组),它是一个快速且灵活的大数据集容器。本教程将详细介绍 NumPy ndarray 对象的基础知识、创建方法、属性以及常用操作。

一、NumPy Ndarray 对象简介

ndarray 是 NumPy 提供的一个数据结构,用于存储同类型元素的多维数组。与 Python 原生的列表(list)相比,ndarray 在存储和访问数据方面更加高效,特别是在处理大型数据集时。此外,ndarray 还提供了大量的数学函数和数组操作方法,使得科学计算和数据分析变得更加简单和快速。

二、创建 Ndarray 对象

NumPy 提供了多种方法来创建 ndarray 对象:

  1. 使用 np.array 函数

    您可以使用 np.array 函数将 Python 列表或嵌套列表转换为 ndarray 对象。

    import numpy as np
    
    # 创建一维数组
    arr1 = np.array([1, 2, 3, 4, 5])
    
    # 创建二维数组
    arr2 = np.array([[1, 2, 3], [4, 5, 6]])
    
  2. 使用特殊函数

    NumPy 还提供了许多特殊函数来创建特定类型的 ndarray 对象,例如:

    • np.zeros:创建一个指定形状和类型的全零数组。
    • np.ones:创建一个指定形状和类型的全一数组。
    • np.empty:创建一个指定形状的未初始化数组(其值可能是随机的)。
    • np.linspace:创建一个在指定范围内均匀分布的数组。
    • np.arange:创建一个类似于 Python 内置 range 函数的数组。
    # 创建一个 3x3 的全零数组
    zeros_arr = np.zeros((3, 3))
    
    # 创建一个 3x3 的全一数组
    ones_arr = np.ones((3, 3))
    
    # 创建一个在 0 到 10 之间均匀分布的 5 个数的数组
    linspace_arr = np.linspace(0, 10, 5)
    
    # 创建一个从 0 到 9 的数组(不包含 10)
    arange_arr = np.arange(10)
    

三、Ndarray 对象的属性

ndarray 对象具有多个属性,用于描述数组的形状、数据类型、内存布局等。以下是一些常用的属性:

  • shape:返回数组的维度,是一个表示数组在每个维度上大小的元组。
  • dtype:返回数组元素的数据类型。
  • size:返回数组中元素的总数。
  • ndim:返回数组的维度数(即轴的数量)。
  • data:返回数组的内存缓冲区(通常不需要直接使用)。
# 创建一个二维数组
arr = np.array([[1, 2, 3], [4, 5, 6]])

# 打印数组的属性
print("Shape:", arr.shape)        # 输出: (2, 3)
print("Dtype:", arr.dtype)        # 输出: int64(或根据系统不同可能为 int32)
print("Size:", arr.size)          # 输出: 6
print("Ndim:", arr.ndim)          # 输出: 2
# print("Data:", arr.data)        # 通常不需要直接打印或使用此属性

四、Ndarray 对象的方法

ndarray 对象提供了大量的方法来执行数组操作,例如数学运算、形状变换、统计计算等。以下是一些常用的方法:

  • 算术运算+, -, *, /, ** 等运算符可以直接用于数组,进行逐元素的算术运算。
  • 形状变换reshapetransposeflatten 等方法用于改变数组的形状。
  • 统计计算summeanstdminmax 等方法用于计算数组的统计量。
  • 索引与切片:与 Python 列表类似,但支持多维索引和高级索引。
# 创建一个二维数组
arr = np.array([[1, 2, 3], [4, 5, 6]])

# 算术运算
arr_plus = arr + 10  # 每个元素加 10

# 形状变换
arr_reshaped = arr.reshape((3, 2))  # 重塑为 3x2 的数组
arr_transposed = arr.transpose()    # 转置数组
arr_flattened = arr.flatten()       # 将数组展平为一维数组

# 统计计算
sum_val = np.sum(arr)       # 计算数组元素的总和
mean_val = np.mean(arr)     # 计算数组元素的平均值

# 索引与切片
element = arr[1, 2]         # 获取 (1, 2) 位置的元素
row = arr[1, :]             # 获取第二行
column = arr[:, 1]          # 获取第二列
sub_arr = arr[0:2, 1:3]     # 获取子数组

五、总结

NumPy ndarray 对象是一个功能强大的数据结构,它提供了高效的数组存储和操作方法。通过掌握 ndarray 对象的基础知识、创建方法、属性以及常用操作,您可以更加高效地处理和分析数据。NumPy 在科学计算、数据分析、机器学习等领域有着广泛的应用,是 Python 生态系统中不可或缺的一部分。建议您进一步阅读 NumPy 的官方文档或相关书籍,以深入了解 ndarray 对象的高级功能和最佳实践。

本文地址:https://www.tides.cn/p_numpy-ndarray