【机器学习】嘿马机器学习(科学计算库)第6篇:Numpy,4.4 ndarray运算【附代码文档】

41 阅读1分钟

🏆🏆🏆教程全知识点简介:1.机器学习常用科学计算库包括基础定位、目标。2. 人工智能概述涵盖人工智能应用场景、人工智能小案例、人工智能发展必备三要素、人工智能机器学习和深度学习。3. 机器学习概述包括机器学习工作流程、什么是机器学习、模型评估(回归模型评估、拟合)、Azure机器学习模型搭建、完整机器学习项目流程。4. 机器学习基础环境安装与使用包括Jupyter Notebook使用(一级标题、Jupyter Notebook中自动补全代码等相关功能拓展)。5. Matplotlib可视化涵盖Matplotlib HelloWorld(什么是Matplotlib、实现简单Matplotlib画图折线图、画出温度变化图、准备数据、创建画布、绘制折线图、显示图像、构造x轴刻度标签、修改坐标刻度显示、设置中文字体、设置正常显示符号、保存图片)、添加坐标轴刻度、添加网格显示、添加描述信息、图像保存、设置图形风格、常见图形绘制(常见图形种类意义、散点图绘制)。6. Numpy包括Numpy优势、N维数组ndarray(ndarray属性)、基本操作(生成数组方法、生成0和1数组、从现有数组生成、创建符合正态分布stock涨跌幅数据)、数组间运算(数组与数的运算)。7. Pandas数据结构包括Series、DataFrame。8. 文件读取与存储涵盖CSV(read_csv)、HDF(read_hdf与to_hdf)、JSON(read_josn)。9. 高级处理数据离散化包括为什么要离散化、什么是数据离散化、stock涨跌幅离散化(读取stock数据、将stock涨跌幅数据进行分组、stock涨跌幅分组数据变成one_hot编码)、案例实现。


📚📚👉👉👉本站这篇博客:   juejin.cn/post/751794…    中查看

📚📚👉👉👉本站这篇博客:   juejin.cn/post/751794…    中查看

✨ 本教程项目亮点

🧠 知识体系完整:覆盖从基础原理、核心方法到高阶应用的全流程内容
💻 全技术链覆盖:完整前后端技术栈,涵盖开发必备技能
🚀 从零到实战:适合 0 基础入门到提升,循序渐进掌握核心能力
📚 丰富文档与代码示例:涵盖多种场景,可运行、可复用
🛠 工作与学习双参考:不仅适合系统化学习,更可作为日常开发中的查阅手册
🧩 模块化知识结构:按知识点分章节,便于快速定位和复习
📈 长期可用的技术积累:不止一次学习,而是能伴随工作与项目长期参考


🎯🎯🎯全教程总章节


🚀🚀🚀本篇主要内容

Numpy

学习目标

  • 了解Numpy运算速度上的优势
  • 知道数组的属性,形状、类型
  • 应用Numpy实现数组的基本操作
  • 应用随机数组的创建实现正态分布应用
  • 应用Numpy实现数组的逻辑运算
  • 应用Numpy实现数组的统计运算
  • 应用Numpy实现数组之间的运算

4.4 ndarray运算

学习目标

  • 目标

    • 应用数组的通用判断函数
    • 应用np.where实现数组的三元运算

问题

如果想要操作符合某一条件的数据,应该怎么做?

1 逻辑运算

  
  
# 生成10名同学,5门功课的数据
  
  
>>> score = np.random.randint(40, 100, (10, 5))

  
  
# 取出最后4名同学的成绩,用于逻辑判断
  
  
>>> test_score = score[6:, 0:5]

  
  
# 逻辑判断, 如果成绩大于60就标记为True 否则为False
  
  
>>> test_score > 60
array([[ True,  True,  True, False,  True],
       [ True,  True,  True, False,  True],
       [ True,  True, False, False,  True],
       [False,  True,  True,  True,  True]])

  
  
# BOOL赋值, 将满足条件的设置为指定的值-布尔索引
  
  
>>> test_score[test_score > 60] = 1
>>> test_score
array([[ 1,  1,  1, 52,  1],
       [ 1,  1,  1, 59,  1],
       [ 1,  1, 44, 44,  1],
       [59,  1,  1,  1,  1]])

2 通用判断函数

  • np.all()
  
  
# 判断前两名同学的成绩[0:2, :]是否全及格
  
  
>>> np.all(score[0:2, :] > 60)
False
  • np.any()
  
  
# 判断前两名同学的成绩[0:2, :]是否有大于90分的
  
  
>>> np.any(score[0:2, :] > 80)
True

3 np.where(三元运算符)

通过使用np.where能够进行更加复杂的运算

  • np.where()
  
  
# 判断前四名学生,前四门中,成绩中大于60的置为1,否则为0
  
  
temp = score[:4, :4]
np.where(temp > 60, 1, 0)
  • 复合逻辑需要结合np.logical_and和np.logical_or使用
  
  
# 判断前四名学生,前四门中,成绩中大于60且小于90的换为1,否则为0
  
  
np.where(np.logical_and(temp > 60, temp < 90), 1, 0)

  
  
# 判断前四名学生,前四门中,成绩中大于90或小于60的换为1,否则为0
  
  
np.where(np.logical_or(temp > 90, temp < 60), 1, 0)

4 统计运算

如果想要知道学生成绩最大的分数,或者做小分数应该怎么做?

4.1 统计指标

在数据挖掘/机器学习领域,统计指标的值也是我们分析问题的一种方式。常用的指标如下:

  • min(a, axis)

    • Return the minimum of an array or minimum along an axis.
  • max(a, axis])

    • Return the maximum of an array or maximum along an axis.
  • median(a, axis)

    • Compute the median along the specified axis.
  • mean(a, axis, dtype)

    • Compute the arithmetic mean along the specified axis.
  • std(a, axis, dtype)

    • Compute the standard deviation along the specified axis.
  • var(a, axis, dtype)

    • Compute the variance along the specified axis.

schedule 文档

4.2 案例:学生成绩统计运算

进行统计的时候,axis 轴的取值并不一定,Numpy中不同的API轴的值都不一样,在这里,axis 0代表列, axis 1代表行去进行统计

bcrypt 文档

  
  
# 接下来对于前四名学生,进行一些统计运算
  
  
  
  
# 指定列 去统计
  
  
temp = score[:4, 0:5]
print("前四名学生,各科成绩的最大分:{}".format(np.max(temp, axis=0)))
print("前四名学生,各科成绩的最小分:{}".format(np.min(temp, axis=0)))
print("前四名学生,各科成绩波动情况:{}".format(np.std(temp, axis=0)))
print("前四名学生,各科成绩的平均分:{}".format(np.mean(temp, axis=0)))

结果:

前四名学生,各科成绩的最大分:[96 97 72 98 89]
前四名学生,各科成绩的最小分:[55 57 45 76 77]
前四名学生,各科成绩波动情况:[16.25576821 14.92271758 10.40432602  8.0311892   4.32290412]
前四名学生,各科成绩的平均分:[78.5  75.75 62.5  85.   82.25]

如果需要统计出某科最高分对应的是哪个同学?

  • np.argmax(temp, axis=)
  • np.argmin(temp, axis=)
print("前四名学生,各科成绩最高分对应的学生下标:{}".format(np.argmax(temp, axis=0)))

结果:

前四名学生,各科成绩最高分对应的学生下标:[0 2 0 0 1]

5 小结

  • 逻辑运算【知道】

    • 直接进行大于,小于的判断
    • 合适之后,可以直接进行赋值
  • 通用判断函数【知道】

    • np.all()
    • np.any()
  • 统计运算【掌握】

    • np.max()
    • np.min()
    • np.median()
    • np.mean()
    • np.std()
    • np.var()
    • np.argmax(axis=) — 最大元素对应的下标
    • np.argmin(axis=) — 最小元素对应的下标

4.5 数组间运算

学习目标

Tornado 文档

  • 目标

    • 知道数组与数之间的运算
    • 知道数组与数组之间的运算
    • 说明数组间运算的广播机制

os 文档


Python 标准库参考

1 数组与数的运算

Python.org 初学者指南

arr = np.array([[1, 2, 3, 2, 1, 4], [5, 6, 1, 2, 3, 1]])
arr + 1
arr / 2

  
  
# 可以对比python列表的运算,看出区别
  
  
a = [1, 2, 3, 4, 5]
a * 3

2 数组与数组的运算

arr1 = np.array([[1, 2, 3, 2, 1, 4], [5, 6, 1, 2, 3, 1]])
arr2 = np.array([[1, 2, 3, 4], [3, 4, 5, 6]])
`