numpy数组与矩阵运算

news/2024/9/28 21:09:56 标签: numpy, 矩阵, python
重点在于对数组和矩阵的处理。

一、数组

1.创建数组 方式多样

np.array(列表 元组 range对象)
np.arange(n):同range
np.linspace():等差
np.logspace():等比
np.zeros((a,b))
np.ones((a,b))
np.identity(dim):dim*dim的单位矩阵
np.randint(s, e, num / typle):随机数组
np.rand(num):随机数
np.diag([,,,,]):对角矩阵

2.测试数组元素是否足够接近  判断浮点数相等

isclose(a, b, rtol=相对误差, atol=绝对误差, equalnan=):判断每个位置元素是否相等,返回若干个true/false。
allclose(同上):判断是否都相等,返回一个true/false。

3.修改数组值

np.append(arr, num/list)
np.insert(arr, posi, num/list)
arr[posi] = num
arr[一/二维切片] = num,这个修改方法比较多样 查文档

4.数组与标量运算 以乘方为例

arr ** num:arr内每个元素乘num次方。
num ** arr:num乘arr内的每个元素次方。

5.数组排序

np.argsort(arr):返回升序排序后的原数组下标。
arr[_]:这才能输出排序后的结果。
np.argmax(arr):求最大值 下标
np.argmin(arr)
arr.sort(axis=):原数组内排序。

6.数组内积

np.dot(x,y):计算对应位置元素乘积之和。

7.数组访问

b[0]
b[0][0] = b[0,0]
b[[0, 1]]:第一二行所有元素。
b[[0, 1], [0, 1]]:第一行第一列,第二行第二列。 #第一个列表是行,第二个列表是列。不指定列,表示所有列。
b[: : -1]:反向切片

8.数组的函数运算

np.sin(x)
np.cos(x)
np.round(x):四舍五入。
np.ceil(x):向上取整。

9.改变数组形状

x.shape:查看数组形状
x.size:查看数组元素个数
x.shape =:原地修改形状。-1表示自动计算。
x = x.reshape(( , )):返回一个新数组。不能修改元素个数,必须reshape前后相同。
x.resize(( , )):通过删除元素或者补0,能修改元素个数。

10.数组布尔运算 

x > 1:返回true/false数组。
x[x > 1]:返回满足条件的数组。
sum(x > 1 & ... & ... ):返回满足条件的元素个数。
np.all(x < 1)
np.any(x < 1)
#两个数组相比 在对比机器学习pred和target值时非常实用
a > b:同上 对应位置元素相比
a[a < b & ... & ... | ... | ...]:任意添加条件。

11.数组堆叠与合并

np.hstack((a1, a2)):对应元素水平堆叠(合并)。
np.vstack((a1, a2)):垂直堆叠。
np.concatenate((a1, a2), axis=):合并。

二、矩阵

1.矩阵生成

矩阵 只能是二维的,只能包含数字。矩阵运算也和数组不同。
np.matrix(可迭代对象)

2.矩阵转置 第i行变成第i列

x.T

3.计算矩阵特征

!axis=0,相当于把矩阵压缩到x轴。axis=1,相当于压缩到y轴。
x.mean(axis)
x.sum(axis)
x.max(axis)
x.argmax(axis)
x.diagonal():对角线元素。
x.nonzero():非0元素下标。

4.矩阵乘法

x*y

5.计算相关系数矩阵

np.corrcoef([], [])

6.方差、协方差、标准差

np.cov(x, y): 如果有X,Y两个变量,每个时刻的“x值 与其均值之差”乘以“y值 与其均值之差”得到一个乘积,再对这每时刻的乘积求和并求出均值。
np.cov(x):方差。
np.std(x):标准差。

7.计算特征值和特征向量

e, v = np.linalg.eig(列表/np数组/矩阵 ):返回特征值和特征向量。

8.计算可逆矩阵

y = np.linalg.inv(x)

9.奇异值分解

~可以把大矩阵分解为多个小矩阵的乘积,实现降维。
np.linalg.svd(a):将a分解为 u*np.diag(s)*v,并返回usv,其中s的元素就是a的奇异值。
还能计算线性方程组和范数。

http://www.niftyadmin.cn/n/5681853.html

相关文章

计算机网络自顶向下(1)---网络基础

目录 1.网络的分类 2.网络协议 3.网络分层结构 1.OSI七层模型 2.TCP/IP四层模型 3.网络与OS的关系 4.网络传输基本流程 1.协议报头 5.网络中的地址管理 1.IP地址 2.端口号 6.传输层协议 1.TCP协议 2.UDP协议 3.网络字节序 7.socket 1.网络的分类 局域网&…

BUG项目管理

最近只要改项目就有可能产生bug。 目前这项目&#xff0c;从一开始我就参与开发。 很长一段时间都是敏捷开发&#xff0c;有时候连UI图都是后出。 随着时间加长&#xff0c;需求复杂度增加&#xff0c;有时候动下代码就伤筋动骨&#xff0c;事故不断&#xff0c;主要是影响口…

WebGL动画与交互

目录 动画交互拖放触摸事件多点触控手势识别滑动手势缩放和平移键盘控制游戏控制

nodejs逐字读取文件示例

像chatpGPT显示文字一样.主要是服务器流式返回数据.前端用for await读取response.body <button id"fetchjson" onclick"FetchJSON()">fetch json看console与network</button> <button id"fetchstream" onclick"FetchStrea…

从0新建一个微信小程序实现一个简单跳转

首先 1.从这里下载开发工具 https://developers.weixin.qq.com/miniprogram/dev/framework/quickstart/getstart.htm 2. 等下载完毕后 创建一个空白项目 在pages目录下右键创建一个page : testUI,这时候会生成四个文件 新建一个文件夹 testUI 给他们放一起 3.增加一个按钮 …

WSL (Linux)配置 Rust 开发调试环境

WSL &#xff08;Linux&#xff09;配置 Rust 开发调试环境 安装 Rust&#xff1a;安装 Rust 环境 - Rust语言圣经(Rust Course) 除了执行以上步骤&#xff0c;还得安装编译工具&#xff1a; sudo apt-get update sudo apt-get install build-essential配置 VSCode&#xff1a;…

数据结构与算法——Java实现 20.习题——二叉树层序遍历

认真的人改变自己&#xff0c;执着的人改变命运 —— 24.9.27 102. 二叉树的层序遍历 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3],[9,20],[15,7]]示例 2&#xff1a; 输入&#xff1a;root [1] 输出&#xff1a;[[1]]示例 3&…

繁体字能申请注册商标吗?

有些主体为了表现企业历史和文化&#xff0c;喜欢用繁体字申请注册商标&#xff0c;那繁体字可以能申请注册商标吗&#xff0c;当然是可以的&#xff0c;普推知产老杨检索在1990年《国家工商行政管理局商标局关于商标可否使用繁体字问题的答复》&#xff0c;可以使用繁体字&…