【深度学习】 Python 和 NumPy 系列教程(十一):NumPy详解:3、数组数学(元素、数组、矩阵级别的各种运算)
目录
一、前言
二、实验环境
三、NumPy
0、多维数组对象(ndarray)
多维数组的属性
1、创建数组
2、数组操作
3、数组数学
1. 元素级别
a. 直接运算
b. 加法:np.add()函数
c. 减法:np.subtract()函数
d. 乘法:np.multiply()函数
e. 除法:np.divide()函数
f. 幂运算:np.power()函数
g. 取余与求商:
2. 数组级别
a. 平均值:np.mean()
b. 最大值和最小值:np.max()、np.min()
c. 求和:np.sum()
d. 标准差和方差:np.std()、np.var()
3. 矩阵级别
a. 矩阵乘法
b. 矩阵转置
c. 矩阵求逆
d. 行列式
e. 特征值和特征向量
f. 矩阵的迹
g. 点积
4. 其他数学函数
a. 三角函数
b. 指数和对数函数
c. 取整函数
d. 绝对值
e. 累加和和累积
一、前言
Python是一种高级编程语言,由Guido van Rossum于1991年创建。它以简洁、易读的语法而闻名,并且具有强大的功能和广泛的应用领域。Python具有丰富的标准库和第三方库,可以用于开发各种类型的应用程序,包括Web开发、数据分析、人工智能、科学计算、自动化脚本等。
Python本身是一种伟大的通用编程语言,在一些流行的库(numpy,scipy,matplotlib)的帮助下,成为了科学计算的强大环境。本系列将介绍Python编程语言和使用Python进行科学计算的方法,主要包含以下内容:
- Python:基本数据类型、容器(列表、元组、集合、字典)、函数、类
- Numpy:数组创建、数组操作、数组数学、广播
- Matplotlib:绘图,子图,图像
- IPython:创建笔记本,典型工作流程
二、实验环境
numpy | 1.21.6 | |
python | 3.7.16 |
- 运行下述命令检查Python版本
python --version
- 运行下述代码检查Python、NumPy版本
import sys
import numpy as npprint("Python 版本:", sys.version)
print("NumPy 版本:", np.__version__)
三、NumPy
NumPy(Numerical Python)是一个用于科学计算的Python库。它提供了一个强大的多维数组对象(ndarray),用于进行高效的数值运算和数据处理。Numpy的主要功能包括:
多维数组:Numpy的核心是ndarray对象,它是一个多维数组,可以存储同类型的元素。这使得Numpy非常适合处理向量、矩阵和其他多维数据结构。
数学函数:Numpy提供了许多常用的数学函数,如三角函数、指数函数、对数函数等。这些函数可以直接应用于整个数组,而无需编写循环。
广播(Broadcasting):Numpy支持不同形状的数组之间的运算,通过广播机制,可以对形状不同的数组进行逐元素的操作,而无需显式地编写循环。
线性代数运算:Numpy提供了丰富的线性代数运算函数,如矩阵乘法、求解线性方程组、特征值计算等。
随机数生成:Numpy包含了用于生成各种概率分布的随机数的函数,如均匀分布、正态分布、泊松分布等。
数据操作:Numpy提供了很多用于操作数组的函数,如切片、索引、排序、去重等。
Numpy广泛应用于科学计算、数据分析、机器学习等领域。它的高效性和便捷性使得它成为Python数据科学生态系统中不可或缺的组成部分。
0、多维数组对象(ndarray)
NumPy的ndarray
对象是NumPy库中最重要的对象之一,也是进行科学计算的核心数据结构。ndarray
代表了一个多维的数组,可以存储相同类型的元素。
多维数组的属性
ndarray.shape
:返回表示数组形状的元组,例如(2, 3)
表示2行3列的数组。ndarray.dtype
:返回数组中元素的数据类型,例如int
、float
、bool
等。ndarray.ndim
:返回数组的维度数,例如1表示一维数组,2表示二维数组。
1、创建数组
【深度学习】 Python 和 NumPy 系列教程(九):NumPy详解:1、创建数组的n种方式_QomolangmaH的博客-CSDN博客https://blog.csdn.net/m0_63834988/article/details/132782221?spm=1001.2014.3001.5501
2、数组操作
【深度学习】 Python 和 NumPy 系列教程(十):NumPy详解:2、数组操作(索引和切片、形状操作、转置操作、拼接操作)_QomolangmaH的博客-CSDN博客https://blog.csdn.net/m0_63834988/article/details/132830547?spm=1001.2014.3001.5501
3、数组数学
1. 元素级别
NumPy提供了许多在数组元素级别进行数学运算的函数,例如加法、减法、乘法、除法、幂运算等。这些函数会对数组中的每个元素进行相应的数学计算,并返回一个新的数组作为结果。
a. 直接运算
import numpy as nparr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])# 加法
result = arr1 + arr2
print(result) # 输出: [5 7 9]# 减法
result = arr1 - arr2
print(result) # 输出: [-3 -3 -3]# 乘法
result = arr1 * arr2
print(result) # 输出: [4 10 18]# 除法
result = arr1 / arr2
print(result) # 输出: [0.25 0.4 0.5]
b. 加法:np.add()
函数
import numpy as nparr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])# 数组元素级别的加法
result = np.add(arr1, arr2)
print(result)
输出:
[5 7 9]
c. 减法:np.subtract()
函数
import numpy as nparr1 = np.array([4, 5, 6])
arr2 = np.array([1, 2, 3])# 数组元素级别的减法
result = np.subtract(arr1, arr2)
print(result)
输出:
[3 3 3]
d. 乘法:np.multiply()
函数
import numpy as nparr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])# 数组元素级别的乘法
result = np.multiply(arr1, arr2)
print(result)
输出:
[ 4 10 18]
e. 除法:np.divide()
函数
import numpy as nparr1 = np.array([4, 6, 8])
arr2 = np.array([2, 3, 4])# 数组元素级别的除法
result = np.divide(arr1, arr2)
print(result)
输出:
[2. 2. 2.]
f. 幂运算:np.power()
函数
import numpy as nparr = np.array([1, 2, 3])# 数组元素级别的幂运算
result = np.power(arr, 2)
print(result)
输出:
[1 4 9]
g. 取余与求商:
import numpy as nparr1 = np.array([7, 8, 9])
arr2 = np.array([2, 3, 4])# 数组的取余
result = np.mod(arr1, arr2)
print(result) # 输出: [1 2 1]# 数组的求商
result = np.divmod(arr1, arr2)
print(result) # 输出: (array([3, 2, 2]), array([1, 2, 1]))
2. 数组级别
a. 平均值:np.mean()
import numpy as nparr = np.array([1, 2, 3, 4, 5])# 计算数组的平均值
mean_value = np.mean(arr)
print(mean_value)
输出:
3.0
b. 最大值和最小值:np.max()、
np.min()
使用np.max()
和np.min()
函数分别计算数组的最大值和最小值。
import numpy as nparr = np.array([1, 2, 3, 4, 5])# 计算数组的最大值和最小值
max_value = np.max(arr)
min_value = np.min(arr)print(max_value, min_value)
输出:
5 1
c. 求和:np.sum()
计算数组所有元素的和
import numpy as nparr = np.array([1, 2, 3, 4, 5])# 计算数组的元素和
sum_value = np.sum(arr)
print(sum_value)
输出:
15
d. 标准差和方差:np.std()
、np.var()
使用np.std()
和np.var()
函数计算数组的标准差和方差
import numpy as nparr = np.array([1, 2, 3, 4, 5])# 计算数组的标准差和方差
std_value = np.std(arr)
var_value = np.var(arr)print(std_value, var_value)
输出:
1.4142135623730951 2.0
3. 矩阵级别
a. 矩阵乘法
import numpy as npmatrix1 = np.array([[1, 2], [3, 4]])
matrix2 = np.array([[5, 6], [7, 8]])# 矩阵乘法
result = np.matmul(matrix1, matrix2)
# 或者使用 @ 运算符
# result = matrix1 @ matrix2print(result)
输出结果为:
[[19 22][43 50]]
b. 矩阵转置
import numpy as npmatrix5 = np.array([[1, 2], [3, 4]])
result = np.transpose(matrix5)
# 或者使用 .T 属性
# result = matrix5.T
print(result)
转置结果:
[[1 3]
[2 4]]
c. 矩阵求逆
import numpy as npmatrix6 = np.array([[1, 2], [3, 4]])
result = np.linalg.inv(matrix6)
print(result)
求逆结果为:
[[-2. 1. ]
[ 1.5 -0.5]]
d. 行列式
import numpy as npmatrix7 = np.array([[1, 2], [3, 4]])
result = np.linalg.det(matrix7)
print(result)
行列式结果:
-2.0000000000000004
e. 特征值和特征向量
import numpy as npmatrix8 = np.array([[1, 2], [3, 4]])
eigenvalues, eigenvectors = np.linalg.eig(matrix8)
print("特征值:", eigenvalues)
print("特征向量:", eigenvectors)
输出:
特征值: [-0.37228132 5.37228132]
特征向量: [[-0.82456484 -0.41597356]
f. 矩阵的迹
import numpy as npmatrix9 = np.array([[1, 2], [3, 4]])
result = np.trace(matrix9)
print(result)
输出:
5
g. 点积
向量的点积是指两个向量对应位置的元素相乘后再求和的运算。
import numpy as nparr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])# 使用 np.dot 函数计算向量的点积
result = np.dot(arr1, arr2)
print(result) # 输出: 32# 使用数组对象的 dot 方法计算向量的点积
result = arr1.dot(arr2)
print(result) # 输出: 32
4. 其他数学函数
a. 三角函数
import numpy as nparr = np.array([0, np.pi/2, np.pi])# 正弦函数
result = np.sin(arr)
print(result) # 输出: [0. 1. 0.]# 余弦函数
result = np.cos(arr)
print(result) # 输出: [1. 0. -1.]# 正切函数
result = np.tan(arr)
print(result) # 输出: [0. 无穷大 -0.]
b. 指数和对数函数
import numpy as nparr = np.array([1, 2, 3])# 指数函数
result = np.exp(arr)
print(result) # 输出: [2.71828183 7.3890561 20.08553692]# 自然对数
result = np.log(arr)
print(result) # 输出: [0. 0.69314718 1.09861229]# 以2为底的对数
result = np.log2(arr)
print(result) # 输出: [0. 1. 1.5849625]
c. 取整函数
import numpy as nparr = np.array([1.4, 2.7, 4.1])# 向下取整
result = np.floor(arr)
print(result) # 输出: [1. 2. 4.]# 向上取整
result = np.ceil(arr)
print(result) # 输出: [2. 3. 5.]# 四舍五入
result = np.round(arr)
print(result) # 输出: [1. 3. 4.]
d. 绝对值
import numpy as nparr = np.array([-1, -2, 3, -4, 5])# 数组元素的绝对值
result = np.abs(arr)
print(result) # 输出: [1 2 3 4 5]
e. 累加和和累积
import numpy as nparr = np.array([1, 2, 3, 4, 5])# 累加和
result = np.cumsum(arr)
print(result) # 输出: [ 1 3 6 10 15]# 累积积
result = np.cumprod(arr)
print(result) # 输出: [ 1 2 6 24 120]
相关文章:
【深度学习】 Python 和 NumPy 系列教程(十一):NumPy详解:3、数组数学(元素、数组、矩阵级别的各种运算)
目录 一、前言 二、实验环境 三、NumPy 0、多维数组对象(ndarray) 多维数组的属性 1、创建数组 2、数组操作 3、数组数学 1. 元素级别 a. 直接运算 b. 加法:np.add()函数 c. 减法:np.subtract()函数 d. 乘法…...
python难题切片处理
边距折叠 Html经常出现的一个外边距折叠,可能有人的不太理解,或者说不知道怎么解决、我们来着重来看下: 当两个div盒子模型连续出现的时候并且同时应用了一个margin外边距,会出现边距重叠的现象: .Div {width:150px; #定义公共的盒子样式 Height:150px; Margin:20p…...
《研发效能(DevOps)工程师(中级)认证》证书查询方式和路径丨IDCF
由国家工业和信息化部教育与考试中心颁发的职业技术证书,也是国内首个《研发效能(DevOps)工程师国家职业技术认证》,IDCF社区作为官方指定培训中心,邀请了多位业界知名专家讲师(部分专家讲师名单:王立杰、杜伟忠、陈老…...
NVR添加rtsp流模拟GB28181视频通道
一、海康、大华监控摄像头和硬盘录像机接入GB28181平台配置 1、海康设备接入配置 通过web登录NVR管理系统,进入网络,高级配置界面,填入GB28181相关参数。 将对应项按刚才获取的配置信息填入即可,下面的视频通道的编码ID可以保持…...
浅谈C++|文件篇
引子: 程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放通过文件可以将数据持久化。C中对文件操作需要包含头文件< fstream > 。 C提供了丰富的文件操作功能,你可以使用标准库中的fstream库来进行文件的读取、写入和定位…...
C++ QT qml 学习之 做个登录界面
最近在学习QT,也初探到qml 做ui 的灵活性与强大,于是手痒痒,做个demo 记录下学习成果 主要内容是如何自己编写一个按钮以及qml多窗口。 参考WX桌面版,做一个登录界面,这里面按钮是写的一个组合控件,有 按…...
LLM 06-大模型架构
LLM 06-大模型架构 6.1 大模型之模型概括 语言模型的一开始就可以被看做是一个黑箱,当前大规模语言模型的能力在于给定一个基于自身需求的prompt就可以生成符合需求的结果。形式可以表达为: p r o m p t ⇝ c o m p l e t i o n prompt \leadsto compl…...
openGauss学习笔记-71 openGauss 数据库管理-创建和管理普通表-删除表中数据
文章目录 openGauss学习笔记-71 openGauss 数据库管理-创建和管理普通表-删除表中数据 openGauss学习笔记-71 openGauss 数据库管理-创建和管理普通表-删除表中数据 在使用表的过程中,可能会需要删除已过期的数据,删除数据必须从表中整行的删除。 SQL不…...
【k8s】kube-proxy 工作模式
文章目录 Userspace模式:iptables模式:负载均衡(Load Balancing) LB轮询(Round Robin):SessionAffinity:最少连接(Least Connection):IP哈希&…...
Linux:Centos9 《下载-安装》
下载 Download (centos.org)https://www.centos.org/download/ 安装 选择第一个安装centos 根据自己需要的语言环境选择即可 这里选择要安装的磁盘,然后点击完成 这里选择第一个就行带有图形化 然后我们去对这两个进行设置就行 这两个地方自己进行设置就行 耐心等…...
数字化管理平台建设实践
在勘察设计行业,各企业加速推进数字化转型。通过管理要素数字化,不断优化内部组织运营效率;通过生产手段数字化、技术产品数字化,提升服务质量,改善客户体验;通过数字化营销,精准对接市场需求&a…...
Linux命令(80)之sort
linux命令之sort 1.sort介绍 linux命令sort用于将文本文件内容以行为单位加以排序;sort命令默认按每行的第一个字符排序,根据首字母的ASCII码值进行升序(从小到大排列)。 sort的默认分隔符是空白(空格和tab),多少空白都算一个分隔符。 2.…...
[k8s] kubectl port-forward 和kubectl expose的区别
kubectl port-forward 和 kubectl expose 是 Kubernetes 命令行工具 kubectl 提供的两种不同方式来公开服务。 kubectl port-forward kubectl port-forward 命令用于在本地主机和集群内部的 Pod 之间建立一个临时的端口转发通道。 该命令将本地机器上的一个端口绑定到集群内部…...
vscode如何设置文件折叠
随着项目的不断迭代开发,复杂度越来越高,配置文件越来越多,导致vscode左侧文件列表展示非常不直观,幸好可以通过文件折叠来简化展示效果,把同类相关的文件折叠在一块展示,方便查看配置文件。配置好后的效果…...
Linux centos7 bash编程训练
训练编写一段代码,打印输出100之内的明7暗7,同时要求每5个数字打印在一行。 此项训练主要是考察for循环的使用,及条件判断表达式的设置和不同写法的应用。 常用的for循环有四种写法(如打印1-100的整数): …...
k8s集群换ip
1.把/etc/kubernetes/*.conf中所有的旧ip换成新ip cd /etc/kubernetes/ find . -type f | xargs sed -i "s/$oldip/$newip/"2.替换$HOME/.kube/config文件中的旧ip为新ip(注意sudo的话需要改root下的) cd $HOME/.kube/ find . -type f | xargs sed -i "s/$old…...
选择HAL库还是标准库
选择HAL库还是标准库呢?HAL库是趋势,标准库不再升级了,转HAL库是大势所趋。HAL库有优点,也有自身的不足,建议初学者还是从标准库入手。 标准库是单片机开发的基本库,它把“用寄存器实现的功能”写成一个函…...
计算机竞赛 机器视觉的试卷批改系统 - opencv python 视觉识别
文章目录 0 简介1 项目背景2 项目目的3 系统设计3.1 目标对象3.2 系统架构3.3 软件设计方案 4 图像预处理4.1 灰度二值化4.2 形态学处理4.3 算式提取4.4 倾斜校正4.5 字符分割 5 字符识别5.1 支持向量机原理5.2 基于SVM的字符识别5.3 SVM算法实现 6 算法测试7 系统实现8 最后 0…...
Mapbox gl HTML经纬度点渲染,动态轨迹播放,自定义图形以及轨迹上显示箭头方向
Mapbox gl HTML经纬度点渲染,动态轨迹播放,自定义图形以及轨迹上显示箭头方向 1. 效果图2. 源码2.1 line.html2.2line_arrow.html 参考 今天要排查个问题,需要显示多个经纬度点连接成线段的方向,于是尝试下展示。 1. mapbox渲染经…...
kubernetes部署(kubeadmin)
文章目录 1.环境准备2. 安装dokcer3.部署cri-docker4.各个节点安装kubeadm等5.整合kubelet和cri-dockerd配置cri-dockerd配置kubelet 6.初始化集群 1.环境准备 环境和软件版本 OS : ubuntu 20.04 container runtime: docker CE 20.10.22 kubernetes 1.24.17 CRI:cr…...
Leetcode168. Excel表列名称
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 题解: 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 代码如下: class Solution {public String convertToTitle(int columnNumber) {StringBuild…...
碎片笔记 | 大模型攻防简报
前言:与传统的AI攻防(后门攻击、对抗样本、投毒攻击等)不同,如今的大模型攻防涉及以下多个方面的内容: 目录 一、大模型的可信问题1.1 虚假内容生成1.2 隐私泄露 二、大模型的安全问题2.1 模型窃取攻击2.2 数据窃取攻击…...
【100天精通Python】Day63:Python可视化_Matplotlib绘制子图,子图网格布局属性设置等示例+代码
目录 1 基本子图绘制示例 2 子图网格布局 3 调整子图的尺寸 4 多行多列的子图布局 5 子图之间的共享轴 6 绘制多个子图类型 7 实战: 绘制一个大图,里面包含6个不同类别的子图,不均匀布局。 绘制子图(subplots)…...
【Android常见问题(六)】- UX标注色值带有百分比的使用方法
这里写自定义目录标题 透明度和不透明度的转换对应色值百分比透明度标注 透明度和不透明度的转换 需要不透明度值的,可以自己算:透明度值 不透明度值 100% 如果UI给的视觉稿标注是:颜色#FFFFFF,透明度40% 。那你的计算方式应该…...
Prometheus+Grafana可视化监控【ElasticSearch状态】
文章目录 一、安装Docker二、安装ElasticSearch(Docker容器方式)三、安装Prometheus四、安装Grafana五、Pronetheus和Grafana相关联六、安装elasticsearch_exporter七、Grafana添加ElasticSearch监控模板 一、安装Docker 注意:我这里使用之前写好脚本进行安装Docke…...
Java手写堆排序(Heap Sort)和案例
Java手写堆排序(Heap Sort) 1. 思维导图 下面是使用Mermaid代码绘制的思维导图,用于解释堆排序算法的实现思路原理: #mermaid-svg-cFIgsLSm5LOBm5Gl {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size…...
Linux设备驱动模型之字符设备
Linux设备驱动模型之字符设备 前面我们有介绍到Linux的设备树,这一节我们来介绍一下字符设备驱动。字符设备是在IO传输过程中以字符为单位进行传输的设备,而字符设备驱动则是一段可以驱动字符设备驱动的代码,当前Linux中,字符设备…...
Kafka3.0.0版本——消费者(自动提交 offset)
目录 一、自动提交offset的相关参数二、消费者(自动提交 offset)代码示例 一、自动提交offset的相关参数 官网文档 参数解释 参数描述enable.auto.commi默认值为 true,消费者会自动周期性地向服务器提交偏移量。auto.commit.interval.ms如果…...
【业务功能116】微服务-springcloud-springboot-Kubernetes集群-k8s集群-KubeSphere-公共服务 DNS
kubernetes集群公共服务 DNS 一、软件安装 # yum -y install bind二、软件配置 # vim /etc/named.conf # cat -n /etc/named.conf1 //2 // named.conf3 //4 // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS5 // server as a caching only…...
马斯洛的动机与人格、需求层次理论
马斯洛是在研究动机(Motivation)时,才提出需求层次作为理论基础来支持动机理论的。所谓动机,就是人类的行为到底是由什么驱动,其实是对人类行为的当下原动力,区别于过去、未来或者是有可能起作用的动力。 …...
静态网页模板下载后怎么修改/seo赚钱方式
1、websocket概念 WebSocket是一种在客户端和服务器之间建立双向通信的协议,它可以实现实时的数据传输,避免了HTTP协议中频繁的请求和响应,从而提高了Web应用程序的性能和用户体验。 WebSocket最早是在2008年由Hixie提出的,后来…...
厦门网站建设外包维护/百度云资源共享
2019独角兽企业重金招聘Python工程师标准>>> 准备工作3个虚拟机节点的构成如下 :安装步骤操作过程1、安装包已经上传至其中1个节点。 2、解压缩安装包 命令:unzip rocketmq-all-4.0.0-incubating-bin-release.zip 解压缩之后如下:…...
毕业设计代做网站都有哪些/如何建网站
作者: 小马哥 rstevens (rstevens2008hotmail.com) 欢迎转载,未经允许,请勿用于商业目的1. 定义 Packet: 通过网卡收发的报文,包括链路层、网络层、传输层的协议头和携带的数据 Data Buffer:用…...
权重高的发帖平台有哪些/成都排名seo公司
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼我个人觉得第二个可能是因为内存不够的缘故,于是照着网上的办法弄了一个辅助布尔型数组来改进一下,然后就变成这样了……结果是2The total of the primes are: 1代码如下#include#include#define N 10000usi…...
杨浦网站建设 网站外包/沈阳seo排名公司
前言 我们知道,React Fiber是React v16中新的reconciliation引擎,是React团队用时2年对Stack Reconciler版本的核心算法进行的重写。它的主要目标是实现虚拟DOM的增量渲染,可以将渲染工作拆分成块并将其分散到多个帧的能力。在新的更新到来时…...
芜湖做网站的邓健照片/广告公司注册
目录 图的存储方法 邻接表存储法详解 前向星和链式前向星 链式前向星 图论-链式前向星-删边操作 图的存储方法 邻接矩阵 即用二维数组实现,G[u][v]为<u,v>边的权值。邻接矩阵适用于存储稠密图,点不多而边很多的时候,邻接矩阵的优…...