numpy如何学

学习 NumPy 的核心思想

在学习具体函数之前,请先理解这几个核心概念,这将让你事半功倍:

  1. NumPy 的核心是 ndarray(N维数组):这是一个快速、紧凑的多维容器,用于存储同类型数据。这与 Python 的列表(可以存储不同类型数据)有本质区别。
  2. 向量化操作 :这是 NumPy 快的原因。避免使用 Python 的 for 循环对数组元素逐个处理,而是直接对整个数组进行数学运算。
  3. 广播机制:这是 NumPy 的一个强大功能,它允许不同形状的数组进行数学运算。

学习路径(四步走)

阶段一:基础入门(建立感觉)

目标:学会创建数组、进行最基本的操作,感受向量化的威力。

  1. 安装与导入

    复制代码
    pip install numpy
    
    import numpy as np  # 这是标准惯例
  2. 创建数组

    • 从列表创建:np.array([1, 2, 3])
    • 创建全0数组:np.zeros(5) / np.zeros((3, 4)) (创建3行4列的矩阵)
    • 创建全1数组:np.ones(5)
    • 创建等差数列:np.arange(0, 10, 2) (类似 range)
    • 创建线性间隔数组:np.linspace(0, 1, 5) (在0和1之间生成5个等间隔的数)
    • 创建随机数组:np.random.rand(3, 3) (0-1之间的随机数)
  3. 数组属性

    • arr.shape:数组的维度,例如 (5,) 表示一维5个元素,(2, 3) 表示2行3列。
    • arr.ndim:数组的轴(维度)数量。
    • arr.size:数组的元素总数。
    • arr.dtype:数组元素的数据类型(如 int64, float32)。
  4. 基本运算(体验向量化)

    • 算术运算:a + b, a - b, a * b注意:这是逐元素相乘,不是矩阵乘法 ), a / b, a ** 2
    • 比较运算:a > b 会返回一个布尔数组。
阶段二:核心操作(重中之重)

目标:掌握索引、切片、形状操作等核心技能,这是日常使用最频繁的部分。

  1. 索引与切片(和 Python 列表类似,但支持多维度)

    复制代码
    arr = np.arange(10) # [0 1 2 3 4 5 6 7 8 9]
    print(arr[5])    # 索引:5
    print(arr[2:7])  # 切片:[2 3 4 5 6]
    
    arr_2d = np.array([[1,2,3], [4,5,6]])
    print(arr_2d[1, 2])  # 索引第二行第三列:6
    print(arr_2d[:, 1])  # 切片:所有行的第二列:[2, 5]
  2. 布尔索引(非常实用!)

    复制代码
    arr = np.array([1, 2, 3, 4, 5])
    print(arr[arr > 2]) # 输出大于2的元素:[3, 4, 5]
  3. 形状操作

    • arr.reshape():改变数组形状,不改变数据。arr.reshape(2, 5)
    • arr.flatten()arr.ravel():将数组展平为一维。
    • arr.T:数组的转置。
  4. 数组拼接与分割

    • np.concatenate([a, b])
    • np.vstack([a, b]) (垂直堆叠)
    • np.hstack([a, b]) (水平堆叠)
    • np.split(arr, indices)
阶段三:常用函数(熟能生巧)

目标:熟悉 NumPy 提供的各种数学和统计函数。

  1. 数学函数
    • np.sin(arr), np.cos(arr), np.exp(arr)(指数), np.log(arr)(对数)
  2. 统计函数
    • arr.sum(), arr.mean()(平均值), arr.std()(标准差), arr.min(), arr.max()
    • 指定轴操作arr.sum(axis=0) 对每一 求和;arr.sum(axis=1) 对每一求和。这是多维数组的难点和重点!
  3. 线性代数 (可选,但机器学习很重要)
    • np.dot(a, b)a @ b:矩阵乘法。
    • np.linalg.inv(arr):矩阵求逆。
    • np.linalg.det(arr):行列式。
阶段四:实践与深入(融会贯通)
  1. 做小项目

    • 用 NumPy 实现一个简单的图像处理(将图片视为三维数组 [高度, 宽度, 通道],进行灰度化、裁剪、翻转等)。
    • 用 NumPy 模拟一个简单的随机游走或蒙特卡洛模拟。
    • 用 NumPy 从头实现一个简单的线性回归。
  2. 理解广播规则:仔细阅读官方文档关于广播的说明,并尝试一些例子。

  3. 阅读优秀代码:在 GitHub 上看看别人是如何在项目中使用 NumPy 的。


学习资源推荐

  • 最佳资源:官方文档
  • 交互式教程
    • Google 的 Colab:提供一个免费的 Jupyter Notebook 环境,可以直接在上面写代码,无需本地安装。
    • 在 Colab 或 Jupyter Notebook 中跟着例子敲代码,并随时查看变量的 shape 和值,这是最佳学习方式。
  • 经典书籍
    • 《利用 Python 进行数据分析》(Wes McKinney 著):虽然重点在 Pandas,但前几章关于 NumPy 的介绍非常精炼实用。

常见误区与建议

  • 不要用 for 循环:初学者的本能是写循环,但要时刻提醒自己"有没有向量化的方法?"。
  • 时刻关注数组的 shape :很多错误都是因为数组形状不匹配导致的。使用 print(arr.shape) 来调试。
  • 理解"视图"与"副本" :切片操作返回的是原数组的视图 ,修改视图会影响原数组。使用 arr.copy() 可以创建副本。

总结一下你的学习循环:
看概念 -> 在 Jupyter/Colab 里敲代码实践 -> 不理解就查文档/搜索 -> 做个小练习巩固 -> 重复。

相关推荐
与代码不die不休21 小时前
Numpy学习——创建ndarray的方法
学习·numpy
聊询QQ:688238861 天前
探索ICEEMDAN算法:信号处理的利器
numpy
与代码不die不休2 天前
Numpy学习——ndarray的属性
学习·numpy
看到代码就头晕2 天前
尚硅谷numpy的学习
numpy
一招定胜负3 天前
机器学习预备知识:numpy、pandas、matplotlib库
人工智能·机器学习·numpy
劈星斩月3 天前
Numpy学习3-数组切片
numpy·数组切片
Maxwell_li15 天前
Pandas 描述分析和分组分析学习文档
学习·数据分析·numpy·pandas·matplotlib
Maxwell_li16 天前
pandas数据合并
机器学习·数据分析·numpy·pandas·matplotlib
爱打代码的小林6 天前
numpy库数组笔记
笔记·python·numpy