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

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应用程序 初始使用&#xff1a; 一开始我们是新账户&#xff0c;里面是没有仓库的&#xff0c;需要手动创建一个仓库。此时&#xff0c;这个仓库是创建在本地仓库里面&#xff0c;需要用到push命令&#xff08;就是那个pub…...

竞赛项目 车位识别车道线检测 - python opencv

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

中文版开源Llama 2同时有了语言、多模态大模型,完全可商用

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

JavaScript、TypeScript、ES5、ES6之间的联系和区别

ECMAScript&#xff1a; 一个由 ECMA International 进行标准化&#xff0c;TC39 委员会进行监督的语言。通常用于指代标准本身。JavaScript&#xff1a; ECMAScript 标准的各种实现的最常用称呼。这个术语并不局限于某个特定版本的 ECMAScript 规范&#xff0c;并且可能被用于…...

RCNA——单臂路由

一&#xff0c;实验背景 之前的VLAN实现的很多都是相同部门互相访问&#xff0c;不同部门无法访问。不过这次整来了一个路由器&#xff0c;领导说大部分的部门虽说有保密信息需要互相隔离&#xff0c;但是这些部门和其它部门也应该互相连通以方便工作交流。因此要配置新的环境&…...

leetcode做题笔记69

给你一个非负整数 x &#xff0c;计算并返回 x 的 算术平方根 。 由于返回类型是整数&#xff0c;结果只保留 整数部分 &#xff0c;小数部分将被 舍去 。 注意&#xff1a;不允许使用任何内置指数函数和算符&#xff0c;例如 pow(x, 0.5) 或者 x ** 0.5 。 思路一&#xff…...

CentOS根分区扩容实战(非LVM)!

在虚拟化平台&#xff08;如KVM,ESXI&#xff09;中&#xff0c;将虚拟机的磁盘大小扩展到所需的大小。这将增加虚拟机的磁盘空间。 在虚拟机中&#xff0c;使用以下命令查看可用的磁盘和分区信息&#xff1a; sudo fdisk -l确定要扩展的根分区的设备名称&#xff08;如 /dev/…...

uniapp 微信小程序 分包

1、manifest.json内添加如图所示&#xff1a; "optimization" : {"subPackages" : true },2、在与pages同级上创建各个分包的文件夹 把需要分包的文件对应移入分包文件夹内 3、page.json内修改分包文件的路径 比如&#xff1a; {"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&#xff1a;HashMap 的数据结构&#xff1f; A&#xff1a;哈希表结构&#xff08;链表散列&#xff1a;数组链表&#xff09;实现&#xff0c;结合数组和链表的优点。当链表长度超过 8 时&#xff0c;链表转换为红黑树。transient Node<K,V>[] table; 2&#xff1a;…...

什么是Selenium?使用Selenium进行自动化测试

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

解决“先commit再pull”造成的git冲突

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

JAVA设计模式----原型设计模式

文章目录 一、简介二、实现方式三、原型模式的注意事项浅拷贝与深拷贝浅拷贝深拷贝一、简介 定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。 类型:创建类模式 类图: 原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Protot…...

树·c++

树&#xff08;Tree&#xff09; 是一种非线性的数据结构&#xff0c;它由若干个 节点&#xff08;Node&#xff09; 组成&#xff0c;并通过 边&#xff08;Edge&#xff09; 相互连接。树的结构类似于现实中的树&#xff0c;其中 根节点&#xff08;Root Node&#xff09; 位…...

vuejs 设计与实现 - 双端diff算法

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

RISC-V在快速发展的处理器生态系统中找到立足点

原文&#xff1a;RISC-V Finds Its Foothold in a Rapidly Evolving Processor Ecosystem 作者&#xff1a;Agam Shah 转载自&#xff1a;https://thenewstack.io/risc-v-finds-its-foothold-in-a-rapidly-evolving-processor-ecosystem/ 以下是正文 But the open source pr…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周&#xff0c;有很多同学在写期末Java web作业时&#xff0c;运行tomcat出现乱码问题&#xff0c;经过多次解决与研究&#xff0c;我做了如下整理&#xff1a; 原因&#xff1a; IDEA本身编码与tomcat的编码与Windows编码不同导致&#xff0c;Windows 系统控制台…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数&#xff0c;对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA

浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求&#xff0c;本次涉及的主要是收费汇聚交换机的配置&#xff0c;浪潮网络设备在高速项目很少&#xff0c;通…...

通过MicroSip配置自己的freeswitch服务器进行调试记录

之前用docker安装的freeswitch的&#xff0c;启动是正常的&#xff0c; 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...