机器学习库【03】:-NumPy-算术运算

一、说明

        与常规数学一样,数组算术本质上是关于加法、减法、乘法和除法。在 中NumPy,此类操作是按元素执行的 [2]:

        NumPy 是 Numerical Python 的缩写,是 Python 生态系统中一个功能强大的库,它提供对大型多维数组和矩阵的支持,以及对这些数组进行操作的数学函数集合。NumPy 的关键优势之一在于其高效处理数组算术运算。在这篇博文中,我们将使用 NumPy 深入研究数组算术的世界,探索基本操作、广播和有用的函数。

二、第 1 部分 - 了解 NumPy 数组:

        在深入研究数组算术之前,我们先简要了解一下 NumPy 数组的基础知识。NumPy 数组是同质的,可以是任何维度。无论是一维数组(向量)、二维数组(矩阵)还是高维数组,NumPy 都提供了一致的接口来执行算术运算。

2.1  逐元素运算

        逐元素操作将给定操作独立地应用于数组中的每个元素。您还可以对数组执行加法、减法、甚至乘法和除法 [3]。

2.2  加法

        如本例所示,NumPy将每个数组的第一个元素相加,将每个数组的第二个元素相加,并将每个数组的第三个元素相加。因此,按元素相加。同样可以推断到多维数组。考虑以下示例 [2]:

        让我们创建两个 NumPy 数组来展示它们的实用性。我们会打电话data给他们ones

按位置添加它们(即添加每行的值)就像键入以下内容一样简单data + ones

data=np.array([1,2])
ones= np.ones(2)
addition = data + ones
print(f'Addition of data and ones:\n{addition}\n')

  +-*/如果两个矩阵大小相同,我们可以使用算术运算符 ( ) 对矩阵进行加法和乘法。NumPy 将这些处理为位置操作:

        逻辑是相同的:每个数组中左上角的元素相加,每个数组右上角的元素相加,依此类推。减法、除法、乘法、指数、对数、根和许多其他代数运算(或算术,取决于你问的是谁)都将以相同的方式执行 [2]。

data=np.array([[1,2],[2,4]])
ones= np.ones(2)
addition = data + ones
print(f'Addition of data and ones:\n{addition}\n')

        仅当不同维度为一(例如,矩阵只有一列或一行)时,我们才可以对不同大小的矩阵进行这些算术运算,在这种情况下,NumPy 使用其广播规则进行该运算 [1]。

2.3 减法、乘法和除法

data=np.array([[1,2]])
ones= np.ones(1)
subtraction = data - ones
print(f'Subtraction of data and ones:\n{subtraction}\n')
data=np.array([[1,2]])
multiplication = data * data
print(f'Subtraction of data and ones:\n{subtraction}\n')
print(f'Multiplication of data and data:\n{multiplication}\n')
data=np.array([[1,2]])
true_division = data / data
print(f'True divition of data and data:\n{true_division}\n')
a = np.arange(1, 10).reshape((3,3))
b = np.arange(10,19).reshape((3,3))
subtraction = a - b
multiplication = a * b
true_division = a / b
floor_division = a // b
remainder = np.remainder(a, b)
print(f'Array a:\n{a}\n')
print(f'Array b:\n{b}\n')
print(f'Subtraction of a and b:\n{subtraction}\n')
print(f'Multiplication of a and b:\n{multiplication}\n')
print(f'True divition of a and b:\n{true_division}\n')
print(f'Floor division of a and b:\n{floor_division}\n')
print(f'Remainder of a and b:\n{remainder}')

2.4  点积

        算术的一个关键区别是使用点积的矩阵乘法的情况。NumPy 为每个矩阵提供了一种dot()与其他矩阵进行点积运算的方法 [1]:点积是一种数学运算,用于计算两个向量的相应元素的乘积之和。在 NumPy 中,您可以使用该dot()函数计算点积。

        我在该图的底部添加了矩阵尺寸,以强调两个矩阵在彼此面对的一侧必须具有相同的尺寸。您可以将此操作想象为如下所示 [1]:

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)
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
dot_product = np.dot(a, b)
print(dot_product)

使用该功能时需要注意以下几点dot()

  • 两个数组必须具有相同的内部维度才能定义点积。
  • dot()函数不可交换,这意味着np.dot(a, b)与 不同np.dot(b, a)
  • dot()函数可用于计算两个复向量的内积。在这种情况下,将使用第二个向量的复共轭。

2.5  广播:

        NumPy 的广播功能可以在不同形状和大小的数组之间进行操作。广播会自动扩展较小的数组以匹配较大数组的形状,从而促进按元素操作。NumPy 允许在不同形状和大小的数组之间进行操作,这称为广播。广播会自动调整较小数组的形状以匹配较大数组,使其与逐元素操作兼容 [3]。

import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
scalar = 2
result_broadcast = arr * scalar
print("Broadcasting Result:", result_broadcast)

在此示例中,标量值被广播到数组的每个元素,从而简化了代码并增强了可读性。

# Creating 1D NumPy arrays
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
scalar = 2
# Actual Matrix Multiplication using np.dot
matrix_multiplication = np.dot(matrix1,matrix2)

三、结论 

        在这篇博文中,我们探索了使用 NumPy 进行数组算术运算的基础知识。无论您是执行简单的按元素运算,还是利用广播和 ufunc 来执行更复杂的任务,NumPy 都为 Python 中的数值计算提供了强大的框架。理解和掌握这些数组算术概念将使您能够有效地操作大型数据集并轻松执行复杂的数学运算。

        NumPy 的文档是探索其他功能和特性的宝贵资源,使您能够在数据科学和机器学习工作中释放数组算术的全部潜力。 

请记住,学习是一个持续的过程。因此,继续学习,继续创造并与他人分享! 

注意:如果您是机器学习输出者,并且有一些好的建议来改进此博客以供分享,请撰写评论并做出贡献。

如果您需要有关机器学习的更多更新并希望做出贡献,请关注并注册以下内容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/587445.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS虚拟机硬盘管理

CentOS虚拟机硬盘管理 一、创建虚拟机时分配硬盘 创建虚拟机时,在下图这个页面需要重新选择一下硬盘,可以对硬盘进行配置。 默认自动分区 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/e9ce72af3d934e75be95f7f86860e92b.png 选择确认分…

EasyExcel详解(结合官方文档)

EasyExcel 零、前言 文章是根据官方文档&#xff0c;加上自己的测试运行总结出来的&#xff0c;目前只总结的EasyExcel读的部分&#xff0c;写的部分还未完结&#xff0c;后续会更新1、官方文档 https://easyexcel.opensource.alibaba.com/2、EasyExcel的maven依赖 <!--…

TikTok真题第10天 | 1541.平衡括号字符串的最少插入次数、1209.删除字符串中所有相邻重复项、1530.好叶子结点对的数量

1541.平衡括号字符串的最少插入次数 题目链接&#xff1a;1541.minimum-insertions-to-balance-a-parentheses-string 解法&#xff1a; 官方题解这次写得非常好。参考题解&#xff1a;左右括号匹配 这道题一眼看过去&#xff0c;就是用栈解决。不过可以使用计数代替栈&…

私有部署ELK,搭建自己的日志中心(三)-- Logstash的安装与使用

一、部署ELK 上文把采集端filebeat如何使用介绍完&#xff0c;现在随着数据的链路&#xff0c;继续~~ 同样&#xff0c;使用docker-compose部署&#xff1a; version: "3" services:elasticsearch:container_name: elasticsearchimage: elastic/elasticsearch:7.9…

git基础概念和常用命令(日常开发收藏备用)

目录 ### 常用命令 ### 远程仓库与克隆 ### 分支管理 ### 子模块&#xff08;Submodule&#xff09; ### 其他高级操作 ### 交互式暂存&#xff08;Interactive Staging&#xff09; ### cherry-pick ### rebase ### reflog与reset ### 子树合并&#xff08;Subtree …

JavaScript 中的 Currying 是什么

Currying 是一种将函数转换为一系列接受单个参数的函数的技术。这意味着一个拥有多个参数的函数可以被转换成仅接受一个参数的函数序列。 在 JavaScript 中&#xff0c;Currying 可以通过使用闭包和函数返回来实现。下面是一个简单的例子&#xff1a; function add(a) {retur…

【LearnOpenGL基础入门——5】着色器

目录 一.简介 二.GLSL 三.数据类型 四.输入与输出 五.Uniform 六.更多属性 一.简介 着色器(Shader)是运行在GPU上的小程序。这些小程序为图形渲染管线的某个特定部分而运行。从基本意义上来说&#xff0c;着色器只是一种把输入转化为输出的程序。着色器也是一种非常独立…

【基础】【Python网络爬虫】【5.数据解析】bs4、Xpath、Parsel模块、正则表达式(附大量案例代码)(建议收藏)

Python网络爬虫基础 数据解析1. 为何数据解析2. 常见的数据类型结构化数据半结构化数据非结构化数据 3. 爬虫项目实现步骤 数据解析模块1. Bs4环境安装bs4解析流程案例 - bs4碧血剑文本爬取 2. Xpath环境安装xpath解析的编码流程xpath表达式如何理解&#xff1f;案例 - 简历模板…

C# Word Excel Could not load file or assembly ‘office, Version=15

C# Word Excel Could not load file or assembly ‘office, Version15 vs2022创建的windows窗体应用程序非.netframework调用Microsoft.Office.Interop.Word;创建word文档时运行时出现未能加载文件或程序集“Microsoft.Office.Interop.Word, Version15.0.0.0, Cultureneutral, …

第3课 使用FFmpeg获取并播放音频流

本课对应源文件下载链接&#xff1a; https://download.csdn.net/download/XiBuQiuChong/88680079 FFmpeg作为一套庞大的音视频处理开源工具&#xff0c;其源码有太多值得研究的地方。但对于大多数初学者而言&#xff0c;如何快速利用相关的API写出自己想要的东西才是迫切需要…

Android studio 多界面的跳转和返回

一、新建一个Empty Activity项目&#xff1a; 二、修改activity_main.xml布局文件&#xff1a; <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android"http://schemas.android.com/a…

【Android Gradle 插件】ProductFlavor 配置 ( consumerProguardFiles 配置 | dimension 配置 )

Android Plugin DSL Reference 参考文档 : 文档主页 : Android Plugin 2.3.0 DSL Reference android 模块配置文档 : AppExtension - Android Plugin 2.3.0 DSL Reference ProductFlavor 文档 : ProductFlavor - Android Plugin 2.3.0 DSL Reference 一、ProductFlavor 配置…

10 Screen安全策略

一,关于安全策略 关于Screen安全策略的章节是为系统集成商准备的 root: # on -u qnxuser -T drm_t drm-intel ,他们负责实施和执行安全策略,以创建和维护一个可信赖的执行环境。 系统集成商使用QNX Neutrino安全策略来定义规则,并赋予Screen实用程序和应用程序procm…

【头歌实训】PySpark Streaming 入门

文章目录 第1关&#xff1a;SparkStreaming 基础 与 套接字流任务描述相关知识Spark Streaming 简介Python 与 Spark StreamingPython Spark Streaming APISpark Streaming 初体验&#xff08;套接字流&#xff09; 编程要求测试说明答案代码 第2关&#xff1a;文件流任务描述相…

什么是ajax,为什么使用ajax?

概念&#xff1a;ajax是一种现有的技术集合&#xff0c;技术内容包括&#xff1a;HTML或XHTML&#xff0c;CSS&#xff0c;JavaScript&#xff0c;DOM,XML,XSLT,以及最重要的XMLHttpRequest。用于浏览器与服务器之间使用异步传输&#xff0c;做到局部请求以实现局部刷新。 作用…

llvm后端之指令选择源码分析

llvm后端之指令选择源码分析 引言1 主要流程1.1 参数降级1.2 构建DAG1.3 类型合法化1.4 向量合法化1.5 DAG合法化1.6 DAG合并 2 目标实现2.1 TargetLowering2.2 SelectionDAGISel 引言 llvm后端指令选择主要是class SelectionDAGISel的子类实现。整个过程将llvm IR转为有向无环…

逆矩阵:解开线性代数之谜的魔法钥匙

逆矩阵&#xff1a;解开线性代数之谜的魔法钥匙 大家好&#xff0c;我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天&#xff0c;让我们一同深入探讨线性代数中的重要主题——逆矩阵…

Resolume Arena(VJ音视频软件):创意无限,视听艺术的新境界

Resolume Arena是一款领先的VJ音视频软件&#xff0c;为创意人士提供了丰富的视觉效果和音频处理功能。无论是在舞台演出、音乐会还是派对活动中&#xff0c;Resolume Arena能够将音乐、视频和图像无缝地结合&#xff0c;创造出引人入胜的视听体验。 Resolume Arena具备强大的…

Nginx快速入门:nginx实现正向代理|反向代理和正向代理的区别(八)

0. 引言 我们之前讲解的一直是nginx的反向代理配置&#xff0c;关于正向代理的实现一直没有涉及&#xff0c;但在实际生产中正向代理也有非常广泛的应用场景&#xff0c;因此&#xff0c;今天我们将针对正向代理来深入学习。 1. 相关概念 1.1 什么是反向代理 所谓反向代理&…

如何利用多开软件在Windows电脑上优化游戏效果?

当今&#xff0c;许多玩家都希望在Windows电脑上通过多开软件来优化游戏效果。多开软件可以让玩家同时在一台电脑上打开多个游戏实例&#xff0c;从而提升游戏体验和效率。接下来&#xff0c;我将为大家介绍如何在Windows电脑上利用多开软件来优化游戏效果。 首先&#xff0c;…