提示信息

NumPy完整指南(上篇):掌握数组、矩阵与高效计算核心技巧

别遗忘 已关注

NumPy 是 Python 生态系统中用于科学计算的基础库之一,它提供了强大的数组对象、高效的数值计算能力以及许多用于数组和矩阵操作的实用函数。在本指南上篇中,我们将介绍 NumPy 的核心功能,帮助你掌握数组和矩阵的基本概念与操作。

1. NumPy 简介

NumPy,全称 Numerical Python,是一个开源的数学运算库。它提供了一个高性能的多维数组对象,并附带了大量的数学函数。NumPy 是科学计算、数据分析和机器学习领域的基础,这些领域的许多其他库(如 SciPy、Pandas、TensorFlow)都依赖于 NumPy。

2. 安装 NumPy

如果你还没有安装 NumPy,可以使用以下命令通过 pip 安装:

  1. pip install numpy

3. NumPy 数组基础

创建数组

NumPy 中的核心对象是 ndarray,它是一个多维数组。你可以通过多种方式创建数组:

  • 从列表或元组创建:

    1. import numpy as np
    2. array_from_list = np.array([1, 2, 3, 4])
    3. array_from_tuple = np.array((5, 6, 7, 8))
  • 使用 NumPy 函数创建:

    1. zeros_array = np.zeros((2, 3)) # 创建一个全零数组
    2. ones_array = np.ones((2, 3)) # 创建一个全一数组
    3. arange_array = np.arange(10) # 创建一个从 0 到 9 的数组
    4. linspace_array = np.linspace(0, 1, 5) # 创建一个从 0 到 1 的线性空间数组,共 5 个元素

数组属性

一旦你创建了数组,你可以通过以下属性来了解数组的信息:

  • ndarray.ndim:数组的维度
  • ndarray.shape:数组的形状(每个维度上的大小)
  • ndarray.size:数组中元素的总数
  • ndarray.dtype:数组中元素的数据类型

数组索引与切片

与 Python 的列表类似,NumPy 数组支持索引和切片:

  1. array = np.array([[1, 2, 3], [4, 5, 6]])
  2. element = array[1, 2] # 获取第二行第三个元素(6)
  3. sub_array = array[:, 1:3] # 切片:获取各行的第二和第三列

4. 数组运算

数组广播

广播是一种强大的机制,它允许 NumPy 在执行算术运算时以不同的形状处理数组。例如,标量与数组的运算:

  1. array = np.array([1, 2, 3])
  2. result = array + 2 # 结果为 array([3, 4, 5])

矩阵运算

NumPy 提供了许多用于矩阵运算的函数:

  • np.dot(a, b):计算两个数组的点积。
  • np.matmul(a, b):计算矩阵乘积。
  • np.transpose(a):矩阵转置。
  1. matrix_a = np.array([[1, 2], [3, 4]])
  2. matrix_b = np.array([[5, 6], [7, 8]])
  3. product = np.dot(matrix_a, matrix_b)

5. 通用函数 (ufunc)

NumPy 提供了大量的通用函数 (ufunc),用于对数组执行元素级运算:

  • np.add(a, b):元素级加法
  • np.subtract(a, b):元素级减法
  • np.multiply(a, b):元素级乘法
  • np.divide(a, b):元素级除法
  1. array_1 = np.array([1, 2, 3])
  2. array_2 = np.array([4, 5, 6])
  3. sum_array = np.add(array_1, array_2) # array([5, 7, 9])

6. 总结

在上篇中,我们探讨了 NumPy 的基本数组操作及数组之间的运算。这些技能是进一步进行复杂数值计算的基础。在下篇中,我们将深入研究 NumPy 中的高级功能,与 SciPy 的集成及如何在数据分析和机器学习任务中应用 NumPy。通过掌握这些技巧,你将能够在科学计算中实现更高效的工作流。

希望本指南能帮助你打下坚实的基础,开始你的 NumPy 之旅。

    遇到难题? "AI大模型GPT4.0、GPT" 是你的私人解答专家! 点击按钮去提问......
别遗忘 关注 已关注

最近一次登录:2024-11-20 11:12:26   

暂时还没有签名,请关注我或评论我的文章
×
免费图表工具,画流程图、架构图