手记

掌握基础:numpy——Python数学运算的高效工具

引言

在进行数据科学、机器学习或任何涉及大量数值计算的编程任务时,numpy 库是不可或缺的。它为Python提供了高效、灵活的多维数组处理能力,显著提升了数学运算的执行效率。numpy 通过底层的C语言代码实现,结合优化的数学函数集,为复杂数据操作提供了强大的支持。它不仅大幅提高了代码执行速度,还简化了数据处理流程,使数据科学家和工程师能够专注于构建模型和分析数据,而非低级的计算细节。

numpy 的基本概念

定义与特点

numpy的核心是ndarray,即多维数组,其特点包括:

  • 高效内存使用numpy数组以连续的内存块存储数据,支持快速访问和操作。
  • 向量化操作:数组上的操作可以自动应用于所有元素,简化了循环和条件处理。
  • 广播机制:支持不同大小的数组进行元素级操作,简化矩阵运算。

与列表的区别

相比于Python的列表,numpy数组具有以下优势:

  • 数据一致性:数组中的所有元素类型相同,有助于优化内存管理和计算效率。
  • 矢量计算:允许直接对数组执行数学运算,无需编写循环代码。
  • 形状和维度:提供明确的形状和维度概念,便于复杂数据结构的管理和操作。
创建 numpy 数组

创建数组是使用numpy.array()来完成的,此外,从列表转为numpy数组能够确保数据一致性。

创建 numpy 数组示例

import numpy as np

# 创建一维数组
array_1d = np.array([1, 2, 3, 4])
# 创建二维数组
array_2d = np.array([[1, 2, 3], [4, 5, 6]])

列表转 numpy 数组

list_to_array = np.array([1, 2, 3])
numpy 数组的基本操作

数组的索引与切片

访问和修改数组元素类似于Python列列表,但更高效。

形状、大小与维度查询

通过shapesizendim属性了解数组结构。

数学运算

执行基本运算如加、减、乘、除,以及高级运算如矩阵乘法和应用数学函数。

高级功能

数组排序

使用np.sort()进行排序。

数据重塑与广播

支持数组形状的动态变化和不同大小数组的元素级操作。

数据清洗与预处理

提供基本的预处理功能,帮助清理数据。

总结与实践

练习题与解答

为了加深理解并检验知识,这里提供练习题和解答示例代码:

练习题

  1. 创建数组:创建一个包含从1到10的数组,将数组中的所有元素加倍。

    import numpy as np
    a = np.arange(1, 11)
    doubled = a * 2
    print(doubled)
  2. 生成单位矩阵:生成一个3x3的单位矩阵,将矩阵的每一行向右移动一位。

    import numpy as np
    identity_matrix = np.eye(3)
    shifted_matrix = np.roll(identity_matrix, 1, axis=1)
    print(shifted_matrix)
  3. 查找最大值和最小值:给定一个数组,找出其中的最大值和最小值,并计算它们的差。

    import numpy as np
    data = np.array([10, 20, 30, 40, 50])
    max_val, min_val = np.max(data), np.min(data)
    diff = max_val - min_val
    print(max_val, min_val, diff)
  4. 点积(内积)求解:对于两个数组AB(假设它们具有相同的形状),计算它们的点积。

    import numpy as np
    A = np.array([1, 2, 3])
    B = np.array([4, 5, 6])
    dot_product = np.dot(A, B)
    print(dot_product)
  5. 使用广播:将一个向量v加到一个矩阵M中的每一行。

    import numpy as np
    v = np.array([1, 2, 3])
    M = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
    v_added = M + v[:, np.newaxis]
    print(v_added)
  6. 数据清洗:清理一个包含nan值的数据数组,只保留非nan的值,并计算清理后的数组的平均值。
    import numpy as np
    data = np.array([1, 2, np.nan, 4, 5])
    filtered_data = data[~np.isnan(data)]
    mean_value = np.mean(filtered_data)
    print(filtered_data, mean_value)

通过这些具体的例子和代码示例,读者可以实践并加深对numpy库的理解和掌握,从而在数据科学和机器学习项目中更高效地使用它。

0人推荐
随时随地看视频
慕课网APP