【python数据建模】Numpy库

数组

创建

import numpy as np
# np.array() 生成元素同类型的数组
a1=np.array([1,2,3,4]) # 整型
a2=np.array([1.0,2,3,4]) # 浮点型
a3=np.array([1,2,3,4],dtype=float)
a4=np.array(['1',2,3,4]) # 字符串# np.astype() 数值类型转换
a=a4.astype(int)
print(a.dtype)# np.arange(start,stop,step,dtype) 
# 生成[start,stop)区间上步长为step,类型为dtype的等差数组
b1=np.arange(1,4)
b2=np.arange(0,10,2)# np.linspace(start,stop,num=50,endpoint=True)
# 生成区间[start,stop]区间上间隔相等的num个数据的等差数组,默认包含区间终点
c1=np.linspace(0,100)
c2=np.linspace(0,10,num=3,endpoint=False)# np.logspace(start,stop,num=50,endpoint=True,base=10.0)
# 默认生成区间[10^start,10^stop]上的num个数据的等比数列
d1=np.logspace(0,1)
d2=np.logspace(0,8,num=3,base=2,dtype=int)

创建特定数组

import numpy as np# np.ones(shape,dtype=None,order='C') 生成元素全为1的矩阵
# order:C 行优先,F:列优先
a1=np.ones((2,3),dtype=int)
a2=np.ones((3,4),dtype=[('x','int'),('y','float')])# np.zeros(shape,dtype=float,order='C') 生成元素全为0的矩阵
b=np.zeros((3,2),dtype=int)# np.empty(shape,dtype=float,order='C') 生成给定维度、数值类型以及存储顺序的未初始化(任意值)的数组。
c=np.empty((2,3))# np.eye(N, M=None, k=0, dtype=<class 'float'>) 2维数组,单位矩阵
# 不输入参数M的时候默认等于N
# k:对角线索引,0为主对角线,正值为对角线上移,负值为对角线下移
d1=np.eye(3)
d2=np.eye(2,3)
d3=np.eye(3,k=2)# np.zeros_like(a,dtype=None) 生成一个与给定数组a同规模和类型的零数组
c1=np.zeros_like(d1)
c2=np.zeros_like(d1,dtype=int)

索引

除了类似二维列表的索引a[i][j],还可以用a[i,j]的形式索引,同样可以类似列表使用切片等操作。Numpy数组的索引还可以和整数数组结合使用,以及进行布尔值索引。

1 整数数组索引

import numpy as np
a=np.arange(0,16).reshape(4,4)
"""
[[ 0  1  2  3][ 4  5  6  7][ 8  9 10 11][12 13 14 15]]
"""
ind=[0,1,2]
print(a[ind]) # 索引前3行
"""
[[ 0  1  2  3][ 4  5  6  7][ 8  9 10 11]]"""
print(a[ind,ind]) # 索引前3行主对角线元素
"""
[ 0  5 10]
"""

2 布尔值索引

可以给出筛选条件,然后通过索引

import numpy as np# 布尔值索引
a=np.arange(0,16).reshape(4,4)
b=a<=5
"""
[[ True  True  True  True][ True  True False False][False False False False][False False False False]]
"""
print(a[b])
"""
[0 1 2 3 4 5]
"""

合并与分解

函数说明
hstack按水平顺序重新堆叠排序两个数组
vstack按垂直顺序重新堆叠排序两个数组

线性代数运算 linalg模块

基本运算

函数说明
kronK积
matmul矩阵乘法
dot向量作内积,矩阵作乘法
inner数组作内积,返回nd数组类型

分解

函数说明
qr矩阵的QR分解
svd奇异值分解
choleskyCholesky分解,常出现在最小二乘法

线代上一些常见的矩阵分解可以见本人自己写的一篇公众号推文:常见的几种矩阵分解
以下只做简单描述和范例展示。

QR分解

通常是把可逆矩阵分解为正交矩阵和对角线元素都为正数的上三角矩阵的乘积。
是对线性无关向量组进行施密特正交单位化的矩阵表达。

import numpy as np
import numpy.linalg as nla = np.array([[1,1,0,0],[1,0,1,0],[-1,0,0,1],[1,-1,-1,1]])Q,R= nl.qr(a)
print(np.matmul(Q,R)) # 验证

奇异值分解

对于可逆矩阵A,存在正交矩阵 Q 1 , Q 2 Q_1,Q_2 Q1,Q2使得 Q 1 A Q 2 Q_1AQ_2 Q1AQ2为对角矩阵,主对角元为 λ i \lambda_i λi满足 λ i 2 \lambda_i^2 λi2 A A T AA^T AAT的全部特征根。
对于不可逆以及非方阵同样如此,但是“对角线”上可能会有0元。

import numpy as np
import numpy.linalg as nla = np.array([[1,1,1],[-1,0,1],[0,-1,1]])U,S,vh= nl.svd(a)

Cholesky分解

是针对正定矩阵的分解,即正定矩阵可以分解为下三角矩阵与其转置矩阵的乘积。

import numpy as np
import numpy.linalg as nla = np.array([[4, 12, -16],[12, 37, -43],[-16, -43, 98]])L = nl.cholesky(a)
print(L)
"""
[[ 2.  0.  0.][ 6.  1.  0.][-8.  5.  3.]]
"""

特征值

函数说明
eig计算方阵的特征值和右特征向量
eigh返回埃尔米特矩阵或实对称矩阵的特征值和特征向量
eigvalsh计算复杂的埃尔米特矩阵或实对称矩阵的特征值
import numpy as np
import numpy.linalg as nl
# eig
eigenvalues, eigenvectors = nl.eig(np.diag((1, 2, 3)))

范数和其他

函数说明
norm矩阵或向量范数
det矩阵行列式
matrix_rank使用svd方法返回矩阵的秩
trace数组对角线的和/矩阵的迹

解方程和逆矩阵

广义逆的定义和性质可以参考《高等代数》(丘维声)相关章节

函数说明
solve求解线性方程组,只能求有唯一解的方程组
lstsq返回线性方程的最小二乘解
inv矩阵求逆
pinv矩阵求广义逆
import numpy as np
import numpy.linalg as nl
# solve
a = np.array([[1,2,1],[0,1,0],[0,0,1]])
b = np.array([1,0,0])
x=nl.solve(a,b)
# inv
a=np.array([[1,2,1],[0,1,0],[0,0,1]])
b=nl.inv(a)
# pinv
a=np.array([[1,2,1],[0,1,0]])
b=nl.pinv(a)

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

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

相关文章

SpringBoot整合数据库连接

JDBC 1、数据库驱动 JDBC&#xff08;Java DataBase Connectivity&#xff09;&#xff0c;即Java数据库连接。简而言之&#xff0c;就是通过Java语言来操作数据库。 JDBC是sun公司提供一套用于数据库操作的接口. java程序员只需要面向这套接口编程即可。不同的数据库厂商&…

【C++】特殊类设计

文章目录 一、请设计一个类&#xff0c;只能在堆上创建对象二、请设计一个类&#xff0c;只能在栈上创建对象三、请设计一个类&#xff0c;不能被拷贝四、请设计一个类&#xff0c;不能被继承 一、请设计一个类&#xff0c;只能在堆上创建对象 实现方式 将类的构造函数私有&a…

Ubuntu配置深度学习环境(TensorFlow和pyTorch)

文章目录 一、CUDA安装1.1 安装显卡驱动1.2 CUDA安装1.3 安装cuDNN 二、Anaconda安装三、安装TensorFlow和pyTorch3.1 安装pyTorch3.2 安装TensorFlow2 四、安装pyCharm4.1 pyCharm的安装4.2 关联anaconda的Python解释器 五、VScode配置anaconda的Python虚拟环境 前言&#xff…

本地部署 川虎 Chat

本地部署 川虎 Chat 1. 川虎 Chat 项目概述2. Github 地址3. 部署 川虎 Chat4. 配置 config.json5. 启动 川虎 Chat 1. 川虎 Chat 项目概述 为ChatGPT等多种LLM提供了一个轻快好用的Web图形界面和众多附加功能。 支持 GPT-4 基于文件问答 LLM本地部署 联网搜索 Agent 助理…

计算机竞赛 深度学习手势识别 - yolo python opencv cnn 机器视觉

文章目录 0 前言1 课题背景2 卷积神经网络2.1卷积层2.2 池化层2.3 激活函数2.4 全连接层2.5 使用tensorflow中keras模块实现卷积神经网络 3 YOLOV53.1 网络架构图3.2 输入端3.3 基准网络3.4 Neck网络3.5 Head输出层 4 数据集准备4.1 数据标注简介4.2 数据保存 5 模型训练5.1 修…

数据结构:复杂度分析

目录 1 算法效率评估 1.1 实际测试 1.2 理论估算 2 迭代与递归 2.1 迭代 1. for 循环 2. while 循环 3. 嵌套循环 2.2 递归 1. 调用栈 2. 尾递归 3. 递归树 2.3 两者对比 3 时间复杂度 3.1 统计时间增长趋势 3.2 函数渐近上界…

MySQL学习笔记26

MySQL主从复制的搭建&#xff08;AB复制&#xff09; 传统AB复制架构&#xff08;M-S)&#xff1a; 说明&#xff1a;在配置MySQL主从架构时&#xff0c;必须保证数据库的版本高度一致&#xff0c;统一版本为5.7.31 环境规划&#xff1a; 编号主机名称主机IP地址角色信息1ma…

460. LFU 缓存

请你为 最不经常使用&#xff08;LFU&#xff09;缓存算法设计并实现数据结构。 实现 LFUCache 类&#xff1a; LFUCache(int capacity) - 用数据结构的容量 capacity 初始化对象int get(int key) - 如果键 key 存在于缓存中&#xff0c;则获取键的值&#xff0c;否则返回 -1…

盛最多水的容器 接雨水【基础算法精讲 02】

盛雨水最多的容器 链接 : 11 盛最多水的容器 思路 : 双指针 &#xff1a; 1.对于两条确定的边界&#xff0c;l和r,取中间的线m与r组成容器&#xff0c;如果m的高度>l的高度&#xff0c;那么整个容器的长度会减小&#xff0c;如果低于l的高度&#xff0c;那么不仅高度可…

前端与后端:程序中两个不同的领域

前端和后端是构成一个完整的计算机应用系统的两个主要部分。它们分别负责不同的功能和任务&#xff0c;有以下几个方面的区别&#xff1a; 功能&#xff1a;前端主要负责用户界面的呈现和交互&#xff0c;包括网页的设计、布局、样式、动画效果和用户输入等。后端则处理网站或应…

Flink安装及简单使用

目录 转载处&#xff08;个人用最新1.17.1测试&#xff09; 依赖环境 安装包下载地址 Flink本地模式搭建 安装 启动集群 查看WebUI 停止集群 Flink Standalone搭建 安装 修改flink-conf.yaml配置文件 修改workers文件 复制Flink安装文件到其他服务器 启动集群 查…

cesium 热力图(CesiumHeatmap)

cesium 热力图 可添加、删除、显示、隐藏 完整代码 <!DOCTYPE html> <html lang="en"><head><meta charset="utf-8">

vue3组合式api的函数系列一

1、响应式核心 1&#xff09;、 ref(值) 1&#xff09;、功能&#xff1a;接受值&#xff0c;返回一个响应式的、可更改的 ref 对象&#xff0c;ref对象只有一个属性&#xff1a;value。value属性保存着接受的值。 2&#xff09;、使用ref对象&#xff1a;模板上不需要写 .v…

mac如何卸载应用并删除文件,2023年最新妙招大公开!

大家好&#xff0c;今天小编要为大家分享一些关于mac电脑的小技巧&#xff0c;特别是关于如何正确卸载应用程序以及清理卸载后的残留文件。你知道吗&#xff1f;很多人都不知道&#xff0c;mac系统默认的卸载方式可能会导致一些残留文件滞留在你的电脑上&#xff0c;慢慢地占用…

解决 ARouter 无法生成路由表,Toast提示 找不到目标路由

Android Studio 版本&#xff1a;2022.3.1 ARouter 版本&#xff1a;1.5.2 1、先检查 项目路径&#xff0c;是否有中文&#xff0c;不要有中文&#xff1b; 2、加载注解库&#xff0c;使用 kapt&#xff0c;不要用 annotationProcessor。 3、分模块开发&#xff0c;每个需要…

openGauss学习笔记-86 openGauss 数据库管理-内存优化表MOT管理-内存表特性-MOT部署配置

文章目录 openGauss学习笔记-86 openGauss 数据库管理-内存优化表MOT管理-内存表特性-MOT部署配置86.1 总体原则86.2 重做日志&#xff08;MOT&#xff09;86.3 检查点&#xff08;MOT&#xff09;86.4 恢复&#xff08;MOT&#xff09;86.5 统计&#xff08;MOT&#xff09;86…

进入IT行业:选择前端开发还是后端开发?

一、前言 开发做前端好还是后端好&#xff1f;这是一个常见的问题&#xff0c;特别是对于初学者来说。在编程世界中&#xff0c;前端开发和后端开发分别代表着用户界面和数据逻辑&#xff0c;就像城市的两个不同街区一样。但是&#xff0c;究竟哪个街区更适合我们作为开发者呢…

第一百六十回 SliverPadding组件

文章目录 概念介绍使用方法示例代码 我们在上一章回中介绍了SliverAppBar组件相关的内容&#xff0c;本章回中将介绍 SliverPadding组件.闲话休提&#xff0c;让我们一起Talk Flutter吧。 概念介绍 我们在本章回中介绍的SliverPadding组件类似Pading组件&#xff0c;它主要用…

Mapfree智驾方案,怎样实现成本可控?

整理|睿思 编辑|祥威 编者注&#xff1a;本文是HiEV出品的系列直播「智驾地图之变」第二期问答环节内容整理。 元戎启行副总裁刘轩与连线嘉宾奥维咨询董事合伙人张君毅、北汽研究总院智能网联中心专业总师林大洋、主持嘉宾周琳展开深度交流&#xff0c;并进行了答疑。 本期元…

【算法|贪心算法系列No.3】leetcode334. 递增的三元子序列

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&#xff0c;希望…