python中常见的矩阵变换总结
利用python做数据处理和分析过程中,如在开展机器学习的数据预处理、数据格式转换等等,不可避免的会涉及到各种矩阵变换,其中使用最多的就是numpy下的矩阵变换,以下是日常用到的一些矩阵变换总结,主要有矩阵中数据类型的整体转换、矩阵维度增减、多矩阵拼接、矩阵切片获取和多矩阵迭代等等,当然,pandas也有相应的矩阵变换操作,相对更复杂,后续会逐步发出来,供参考。
1.转换元素类型和增加维度
import numpy as np
data_pre=np.random.randint(2,10,size=[5,3]) #生成一个5*3的二维整形矩阵,数据范围在2~10之间
data_pre = np.array(data_pre, dtype=np.float32) #数据转换为float
target=np.random.random(10) #随机生成一个一维矩阵,10个数
target = np.array(target, dtype=np.float32).reshape(-1, 1) #数据转换为多行1列数据,相当于增加维度,float型,可以不用的。
data_pre= np.arange(0.0, 5.0, 0.1)[:, np.newaxis] #np.arange会生成一个一维矩阵,希望data_pre是一个二维矩阵,用np.newaxis相当于给数据增加一个维度
target=np.random.random(10) #随机生成一个一维矩阵,10个数
target=target.reshape(-1, 1) #实现行转换为列,转换前y_raw为100个数的一维矩阵,转换后y_raw为100*1的二维矩阵
2.拉平或降低维度
rng = np.random.RandomState(42) #获得随机数生成器,使得每次得到的随机数系列相同
X = np.sort(5 * rng.rand(100, 1), axis=0) #获的100个0到5的随机数给X,X.shape=(100,1),二维
y = np.sin(X).ravel() #矩阵多维度拉成一维矩阵,ravel() 返回的是视图,影响原始矩阵y,flatten() 返回的是拷贝。y.shape=(100,)
import cv2
img_data = cv2.imread('data/lena.jpg', cv2.IMREAD_COLOR) #利用opencv读取图片
img_data = img_data.reshape((-1, 3)) #将三维转换为二维,相当于高度和宽度相乘合并,最后一维不变(3列),转换前img_data:225*225*3,转换后50625*3
#整体维度不变,实现第一个维度行数调整,相当于根据labels找到centers[labels]生成新的new_colors数据,按照labels行数增加,如centers:16*3,labels:50625*3,转换后的new_colors为50625*3
# new_colors = centers[labels].reshape((-1, 3))
3.拼接矩阵
X_pos=np.random.randn(5,3) #随机生成一个10*3的二维矩阵
X_neg=np.random.randn(5,3) #随机生成一个10*3的二维矩阵
# 行拼接
#方式1:二维矩阵,列数不变,行数顺序追加,相当于行顺序拼接,两个矩阵的列数必须相同
X = np.concatenate((X_pos, X_neg))
#方式2:二维矩阵,列数不变,行数顺序追加,相当于行顺序拼接,两个矩阵的列数必须相同
X2=np.r_[X_pos,X_neg]
# 列拼接
#二维矩阵,行数不变,列数顺序追加,相当于列顺序拼接,两个矩阵的行数必须相同
X1=np.c_[X_pos,X_neg]
y_pos=np.random.random(3) #随机生成一个一维矩阵,3个数
y_neg=np.random.random(5) #随机生成一个一维矩阵,5个数
#一维矩阵,行数不变,列数顺序追加,相当于列顺序拼接
y = np.concatenate((y_pos, y_neg))
4.获取矩阵片段
int_list=np.random.randn(10,5) #随机生成一个10*5的二维矩阵
#list获取切片
#int_list[start:stop:step],参数分别为开始,结束和步长
print(int_list)
#对于一维矩阵,获取第1维度的第0,2,4...,步长为2的数据
#对于二维矩阵,获取第2维度的第0~10列,并指定获取第一维度的步长为2,获取的行数=stop/step,如下示例时5行数据
print(int_list[0:10:2])
print(int_list[0:5,:4]) #获取第1维度的第0~5行,第2维度的前4列数据
#对于三维矩阵
arr_float_3d = np.ones((3, 5, 4))
print(arr_float_3d)
#多维list获取第一通道数据
x=arr_float_3d[0, :, :]
#多维list获取第一通道,0~3行数据,第3列到结束的数据
x=arr_float_3d[0, :3, 3:]
5.zip内建函数
zip(*iterables)是内建函数
传入参数:元组、列表、字典等迭代器。
返回参数:一个元组迭代器,将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。主要用于遍历元组。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
X1=np.random.random(5) #随机生成一个一维矩阵,5个数
Y1=np.random.randn(5).astype(np.int32) #随机生成一个一维矩阵,5个数,转换为整数
Z1=np.array([True, False, True, True, False]) #列表,bool值
zz=zip(X1,Y1,Z1)
result = [(a,b,c) for a,b,c in zip(X1,Y1,Z1)]
print(result)
x,y,z=zip(*zz) #元组转换为列表
print(list(x))
zz=zip() #没有参数时,返回的是空列表
相关文章:
python中常见的矩阵变换总结
利用python做数据处理和分析过程中,如在开展机器学习的数据预处理、数据格式转换等等,不可避免的会涉及到各种矩阵变换,其中使用最多的就是numpy下的矩阵变换,以下是日常用到的一些矩阵变换总结,主要有矩阵中数据类型的…...

LightningChart JS 2023Crack,CPU高效实时更新
LightningChart JS 2023Crack,CPU高效实时更新 添加了新的极地热图图表类型-添加了新系列类型,允许您在极地坐标系中可视化热图。极地热图的一些关键特征是: 处理多达400万个数据点。 快速加载速度和CPU高效实时更新。 100ms以完全显示由所有数据填充的热…...

hutool 导出复杂表头excel
假如已这样的表头导出数据 1.把包含表头的excel添加到项目资源目录 2.编写代码读取表头所在sheet,并且加入需导出的数据 /*** 导出excel*/public static void downloadExcel(List<List<Object>> list, HttpServletResponse response) throws IOException {/*Strin…...

git和github学习
一、什么是git和github? 二、学会使用github desktop应用程序 初始使用: 一开始我们是新账户,里面是没有仓库的,需要手动创建一个仓库。此时,这个仓库是创建在本地仓库里面,需要用到push命令(就是那个pub…...

竞赛项目 车位识别车道线检测 - python opencv
0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习 机器视觉 车位识别车道线检测 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) …...

中文版开源Llama 2同时有了语言、多模态大模型,完全可商用
可以说,AI 初创公司 LinkSoul.Al 的这些开源项目让海外开源大模型在国内的普及和推广速度与国际几乎保持了一致。 7 月 19 日,Meta 终于发布了免费可商用版本 Llama 2,让开源大模型领域的格局发生了巨大变化。 Llama 2 模型系列包含 70 亿、…...

JavaScript、TypeScript、ES5、ES6之间的联系和区别
ECMAScript: 一个由 ECMA International 进行标准化,TC39 委员会进行监督的语言。通常用于指代标准本身。JavaScript: ECMAScript 标准的各种实现的最常用称呼。这个术语并不局限于某个特定版本的 ECMAScript 规范,并且可能被用于…...

RCNA——单臂路由
一,实验背景 之前的VLAN实现的很多都是相同部门互相访问,不同部门无法访问。不过这次整来了一个路由器,领导说大部分的部门虽说有保密信息需要互相隔离,但是这些部门和其它部门也应该互相连通以方便工作交流。因此要配置新的环境&…...
leetcode做题笔记69
给你一个非负整数 x ,计算并返回 x 的 算术平方根 。 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。 注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。 思路一ÿ…...
CentOS根分区扩容实战(非LVM)!
在虚拟化平台(如KVM,ESXI)中,将虚拟机的磁盘大小扩展到所需的大小。这将增加虚拟机的磁盘空间。 在虚拟机中,使用以下命令查看可用的磁盘和分区信息: sudo fdisk -l确定要扩展的根分区的设备名称(如 /dev/…...

uniapp 微信小程序 分包
1、manifest.json内添加如图所示: "optimization" : {"subPackages" : true },2、在与pages同级上创建各个分包的文件夹 把需要分包的文件对应移入分包文件夹内 3、page.json内修改分包文件的路径 比如: {"path" : &qu…...

Redis_安装、启动以及基本命令
2.Redis安装 2.1前置处理环境 VMware安装安装centOS的linux操作系统xshellxftp 2.2 配置虚拟机网络 按ctrlaltf2 切换到命令行 cd (/)目录 修改/etc/sysconfig/network-scripts/ifcfg-ens3 vi 命令 按insert表示插入 按ctrlesc退出修改状态 :wq 写入并退出 此文件必须保持一…...

IPv4编址及子网划分
IPv4编址及子网划分 一、IPv4地址概述1.1、IPv4报文结构1.2、IPv4地址分类1.2.1、A类1.2.2、B类1.2.3、C类1.2.4、D类1.2.5、E类 1.3、私有IP地址1.4、特殊地址 二、子网划分2.1、子网掩码2.2、VLSM 可变长的子网掩码2.3、子网划分2.4、子网划分示例2.4.1、子网划分案例 —— A…...

HashMap 二十一问
1:HashMap 的数据结构? A:哈希表结构(链表散列:数组链表)实现,结合数组和链表的优点。当链表长度超过 8 时,链表转换为红黑树。transient Node<K,V>[] table; 2:…...

什么是Selenium?使用Selenium进行自动化测试
什么是 Selenium? Selenium 是一种开源工具,用于在 Web 浏览器上执行自动化测试(使用任何 Web 浏览器进行 Web 应用程序测试)。 等等,先别激动,让我再次重申一下,Selenium 仅可以测试We…...

解决“先commit再pull”造成的git冲突
一、问题场景 在分支上修改了代码然后commit(没有push),此时再git pull,拉下了别人的修改,但是报错无法merge 二、解决步骤 1.在idea下方工具栏选择git -> log,可以看到版本变化链表,右键…...

JAVA设计模式----原型设计模式
文章目录 一、简介二、实现方式三、原型模式的注意事项浅拷贝与深拷贝浅拷贝深拷贝一、简介 定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。 类型:创建类模式 类图: 原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Protot…...
树·c++
树(Tree) 是一种非线性的数据结构,它由若干个 节点(Node) 组成,并通过 边(Edge) 相互连接。树的结构类似于现实中的树,其中 根节点(Root Node) 位…...

vuejs 设计与实现 - 双端diff算法
我们介绍了简单 Diff 算法的实现原理。简单 Diff 算法利用虚拟节点的 key 属性,尽可能地复用 DOM元素,并通过移动 DOM的方式来完成更新,从而减少不断地创建和销毁 DOM 元素带来的性能开销。但是,简单 Diff 算法仍然存在很多缺陷&a…...

RISC-V在快速发展的处理器生态系统中找到立足点
原文:RISC-V Finds Its Foothold in a Rapidly Evolving Processor Ecosystem 作者:Agam Shah 转载自:https://thenewstack.io/risc-v-finds-its-foothold-in-a-rapidly-evolving-processor-ecosystem/ 以下是正文 But the open source pr…...

车载诊断架构 --- DTC消抖参数(Trip Counter DTCConfirmLimit )
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…...
52. N 皇后 II【 力扣(LeetCode) 】
文章目录 零、原题链接一、题目描述二、测试用例三、解题思路四、参考代码 零、原题链接 52. N 皇后 II 一、题目描述 n 皇后问题 研究的是如何将 n 个皇后放置在 n n 的棋盘上,并且使皇后彼此之间不能相互攻击。【补充:不能互相攻击就是要求一个皇后的…...
P12592题解
题目传送门 思路 由于题目中说了可以任意交换两个字符的位置,我们只需要判断这个字符串是否满足回文串的条件即可。 代码: #include<bits/stdc.h> using namespace std; int a[30]; int main(){int T;cin>>T;while(T--){fill(a,a29,0);/…...

房屋租赁系统 Java+Vue.js+SpringBoot,包括房屋类型、房屋信息、预约看房、合同信息、房屋报修、房屋评价、房主管理模块
房屋租赁系统 JavaVue.jsSpringBoot,包括房屋类型、房屋信息、预约看房、合同信息、房屋报修、房屋评价、房主管理模块 百度云盘链接:https://pan.baidu.com/s/1KmwOFzN9qogyaLQei3b6qw 密码:l2yn 摘 要 社会的发展和科学技术的进步…...

3D拟合测量水杯半径
1,目的。 测量水杯的半径 如图所示: 2,原理。 对 3D 点云对象 进行圆柱体拟合,获取拟合后的半径。 3,注意事项。 在Halcon中使用fit_primitives_object_model_3d进行圆柱体拟合时,输出的primitive_para…...

Matlab作图之 subplot
1. subplot(m, n, p) 将当前图形划分为m*n的网格,在 p 指定的位置创建坐标轴 matlab 按照行号对子图的位置进行编号 第一个子图是第一行第一列,第二个子图是第二行第二列......... 如果指定 p 位置存在坐标轴, 此命令会将已存在的坐标轴设…...

android binder(二)应用层编程实例
一、binder驱动浅析 从上图看出,binder的通讯主要涉及三个步骤。 在 Binder Server 端定义好服务,然后向 ServiceManager 注册服务在 Binder Client 中向 ServiceManager 获取到服务发起远程调用,调用 Binder Server 中定义好的服务 整个流…...
黑马点评后端笔记
1.基于Session实现登录流程 发送验证码: 先前端校验,后端再校验(防小人),合法生成验证码(RandomUtil生成),后端保存,在通过短信去发送给用户 短信验证码登录和注册: 拿到验证码和手机号后,后端通过session(spring mvc注入)拿到验证码,进行校验,如果用户…...
InlineHook的原理与做法
InlineHook翻译为内联钩子 内联也就是我们的内联汇编 钩子就是修改目标的执行流程或代码 #include<iostream> using namespace std; #include<Windows.h>DWORD OldPro 0; //老的保护权限 char OldCode[9] { 0 }; //hook前的汇编代码 DWORD RetData 0; …...

ASP.NET MVC添加模型示例
ASP.NET MVC高效构建Web应用ASP.NET MVC 我们总在谈“模型”,那到底什么是模型?简单说来,模型就是当我们使用软件去解决真实世界中各种实际问题的时候,对那些我们关心的实际事物的抽象和简化。比如,我们在软件系统中设…...