当前位置: 首页 > article >正文

numpy数组与矩阵运算

重点在于对数组和矩阵的处理。

一、数组

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.kler.cn/news/324489.html

相关文章:

  • 自动化运维的利器:Ansible、Puppet和Chef详解
  • OpenAPI鉴权(二)jwt鉴权
  • 关于 SQL 的 JOIN 操作
  • 【接口测试】测试试题
  • 工作中使用人工智能的政策和程序的重要性
  • 【YOLO目标检测反光衣数据集】共2388张、已标注txt格式、有训练好的yolov5的模型
  • 服务器感染了.lcrypt勒索病毒,如何确保数据文件完整恢复?
  • 【VUE】vue-router
  • [uni-app]小兔鲜-04推荐+分类+详情
  • CSS 中的overscroll-behavior属性
  • 国产化低功耗低延时广覆盖物联网无线通讯方案_LAKI芯片
  • [数据集][目标检测]辣椒缺陷检测数据集VOC+YOLO格式695张5类别
  • C/C++语言基础--C++面向对象、类、对象概念讲解
  • Qt开发技巧(九)去掉切换按钮,直接传样式文件,字体设置,QImage超强,巧用Qt的全局对象,信号槽断连,低量数据就用sqlite
  • Visual Studio 2022
  • 大功率蓝外光激光模组能使用多长时间?
  • STM32+PWM+DMA驱动WS2812 —— 2024年9月24日
  • 信息安全工程师(23)网络安全体系相关模型
  • H.264编解码介绍
  • 什么是托管安全信息和事件管理 SIEM?
  • STM32嵌入式编程学习到提高:【4】UART串口打印
  • 基于baidu的云函数实现隐藏c2真实地址
  • 企业如何做可视化数据看板
  • 物联网系统中LCD屏主流驱动方案详解
  • 华为vxlan
  • 基于VUE的在线茶叶购物网站的设计与实现后端SpringBoot数据库MySQL
  • 算法竞赛当中离散化算法的初步介绍和简单应用
  • 10_React router6
  • React Native 在 build iOS 的时候如果出现关于 `metro` 的错误
  • My_string 运算符重载,My_stack