15-矩阵转置的拓展延伸

news2024/11/28 16:39:59

🔮矩阵的转置✨

前言

在很多时候我们拿到的数据本身可能并不会把点的坐标按列的方向排列起来,对于我们人类来说,更方便的方式依然是把这个点的坐标按行的方向排列,我们比较熟悉把矩阵看作为一个数据,在这里,P矩阵其实我们就把它看作是一个数据矩阵。

T = ( 1.5 0 0 2 ) T=\begin{pmatrix} 1.5 &0 \\ 0&2\end{pmatrix} T=(1.5002)

P = ( 0 0 4 0 5 3 ) P=\begin{pmatrix} 0 &0 \\ 4 &0 \\ 5 &3\end{pmatrix} P= 045003

在这种情况下,我们依然习惯于把每一行在数据科学中叫做样本。换句话说, 每一行是一个点,而每一列在数据科学中管它叫做特征或者属性,那么对于点坐标的数据来说,每一列就代表某一个维度的值,这个第一列就是x轴或者叫x方向上的值,而第二个维度是y轴或者y方向的值,但是大家一定要知道这个矩阵T是无法和这个矩阵P相乘的,因为一个2x2的矩阵是无法和一个3×2的矩阵相乘的,但是我们拿到的数据如果是这样的一个矩阵怎么办?答案非常简单,我们需要对矩阵P进行转置操作, 所谓的转置就是让行成为列, 让列成为行

P T = ( 0 4 5 0 0 3 ) P^T=\begin{pmatrix} 0 & 4&5 \\ 0& 0&3\end{pmatrix} PT=(004053)

在这里 P T P^T PT就称为 P的转置矩阵

如果从矩阵中的元素角度来看的话, 那么 A = ( a i j ) A=(a_{ij}) A=(aij) A T = ( a j i ) A^T=(a_{ji}) AT=(aji)
我们说起一个。向量如果不进行特殊声明的话,都是指一个列向量

🧩矩阵转置的性质💫

  • ( A T ) T = A (A^T)^T=A (AT)T=A
  • ( A + B ) T = A T + B T (A+B)^T=A^T+B^T (A+B)T=AT+BT
  • ( k ⋅ A ) T = k ⋅ A T (k·A)^T=k·A^T (kA)T=kAT
  • 接下来要注意矩阵乘法的转置就有些不同了 ( A B ) T = B T ⋅ A T (AB)^T=B^T·A^T (AB)T=BTAT, 我们可以这样去看待和理解
    在这里插入图片描述

在上篇文章中我们已经给出了线性代数中向量和矩阵的项目结构和程序代码, 在这里我们紧接着上篇文章中的项目代码在Matrix类中添加矩阵的转置方法。项目代码在这篇文章末尾➡️14-矩阵相乘及其运算法则

🎯实战1–矩阵类的转置方法及其Numpy中的矩阵对象🙌

├───Linear_Algebra
│   │   main_matrix.py
|   |   main_numpy_Matrix.py
│   │   
│   │           
│   ├───playLA
│   │   │   Matrix.py
│   │   │   Vector.py
│   │   │   _globals.py
│   │   │   __init__.py
|   |   |   

接下来我们往Matrix.py程序中的Matrix类中添加转置方法

def T(self):
        """返回矩阵的转置矩阵"""
        return Matrix([[e for e in self.col_vector(i)] for i in range(self.col_num())])

紧接着我们在main_matrix.py中进行测试

# coding:utf-8

from playLA.Matrix import Matrix
from playLA.Vector import Vector

if __name__ == '__main__':
    matrix = Matrix([[1, 2], [3, 4]])
    print(matrix)
    print('matrix.shape=', matrix.shape())
    print("matrix.size=", matrix.size())
    print("len(matrix)=", len(matrix))
    print("matrix[0][0]=", matrix[0, 0])

    matrix2 = Matrix([[5, 6], [7, 8]])
    print(matrix + matrix2)
    print(matrix - matrix2)
    print(matrix * 2)
    print(2 * matrix)
    print(Matrix.zero(2, 3))

    T = Matrix([[1.5, 0], [0, 2]])
    p = Vector([5, 3])
    print(T.dot(p))

    P = Matrix([[0, 4, 5], [0, 0, 3]])
    print(T.dot(P))

    print(matrix.dot(matrix2), matrix2.dot(matrix))  # 验证矩阵相乘是否遵循交换律

    print(P.T()) # 测试程序转置功能是否实现

然后我们再来看一下Numpy中的矩阵对象及其相关的运算
main_numpy_Matrix.py

# coding:utf-8

import numpy as np

if __name__ == '__main__':
    """Numpy中的矩阵和向量是封装在一个类中"""
    # 矩阵的创建
    A = np.array([[1, 2], [3, 4]])
    print(A)

    # 矩阵的属性
    print(A.shape)
    print(A.T)  # 矩阵的转置

    # 获取矩阵的元素
    print(A[1, 1])
    print(A[0])  # 在计算机中矩阵默认是采用行的形式来存储的
    print(A[:,0])  # 获取矩阵A第一列的向量
    print(A[1, :])  # 获取矩阵第二行元素

    # 矩阵的基本运算
    B  = np.array([[5, 6, ], [7, 8, ]])
    print(A + B)
    print(A - B)
    print(A * 10)
    print(10 * A)
    print(A * B)  # 注意它不是矩阵相乘, 它是矩阵的对应元素相乘
    print(A.dot(B))  # 矩阵相乘

    # 矩阵和向量的运算
    p = np.array([10, 100])
    print(A + p)  # 矩阵和向量相加其实是矩阵的每一行都分别去和向量进行相加
    print(A + 1)  # 这其实是高维数组的一种广播机制
    print(A.dot(p))

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

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

相关文章

6款SSL证书实用工具,全都免费使用!

俗话说“工欲善其事,必先利其器”,SSL证书作为保护网站数据传输安全的重要部分,我们在申请、签发、部署安装SSL证书的时候,可能会涉及到CSR文件生成、获取证书链、转换证书格式等需求,这时候有对应的工具就可提高工作效…

SharePoint 审核和监控工具

审核在顺利的 SharePoint 管理中起着重要作用,尤其是在满足法规遵从性和取证要求方面。为避免数据泄露,必须了解谁来自哪个组访问了哪个文档,以及谁创建或删除了网站或网站集。 审核 SharePoint 服务器 SharePoint采用率的提高导致企业在其…

词性标记:了解使用维特比算法(2/2)

作者:Sachin Malhotra和Divya Godayal 来源: Viterbi Algorithm in Speech Enhancement and HMM 一、说明 早就想写一篇隐马尔可夫,以及维特比算法的文章;如今找了一篇,基本描述出隐马尔可夫的特点。 隐马尔可夫模型&a…

精彩回顾 | D-Day深圳 上海站:高频策略研发再提速

上周末,DolphinDB 分别在上海及深圳成功举办了两场 D-Day 分享会,来自国内头部券商、公募基金以及多家私募机构的数十位核心策略研发、数据分析专家们分享了 DolphinDB 在量化交易各个环节的使用经验,并基于与同类技术栈的优劣势对比&#xf…

java spring cloud 企业电子招标采购系统源码:营造全面规范安全的电子招投标环境,促进招投标市场健康可持续发展 tbms

​ 项目说明 随着公司的快速发展,企业人员和经营规模不断壮大,公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境,最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范,以…

Java多线程(八)

目录 一、产生死锁的情况 1.1 一个线程多把锁 1.1.1 Java中可重入锁的实现机制 1.2 两个线程两把锁 1.3 N个线程M把锁 二、解决死锁的方案 2.1 死锁的必要条件 2.2 破除循环等待 一、产生死锁的情况 死锁是这样一种情形:多个线程同时被阻塞,它们中的一个…

开放式耳机很吵吗?开放式耳机推荐

​一般情况下,开放式耳机是不会吵到别人,开放设计,使声音不会被完全封闭在耳朵里,而是向四周扩散。与传统的封闭式耳机相比,开放式耳机以其出色的音质和宽广的音场而备受追捧。选择一款适合自己的开放式耳机无疑是至关…

金蝶云星空对接打通管易云分布式调入单查询接口与其他入库单新增完结接口接口

金蝶云星空对接打通管易云分布式调入单查询接口与其他入库单新增完结接口接口 源系统:金蝶云星空 金蝶K/3Cloud在总结百万家客户管理最佳实践的基础上,提供了标准的管理模式;通过标准的业务架构:多会计准则、多币别、多地点、多组织、多税制应…

Three.js WebXR沉浸式渲染简明教程

在前面文章中,我们了解了 VR 概念以及它们如何在 WebXR 中映射。 这使你可以考虑想要为用户提供的体验。 在本文中,我们将介绍如何将 WebXR 与 Three.JS 结合使用来创建针对大型异构用户群的沉浸式体验。 警告:WebXR API 仍在完善中&#xf…

C++学习笔记总结练习:数值方法

数值方法 1.1 随机数 头文件 #include<random>随机数概述 随机数分布。随机数的分布方式distribution 随机数引擎。产生随机数engin。随机性的源头 随机数生成器。由一个随机数引擎和一个随机数分布&#xff0c;组合成一个随机数生成器。 随机数引擎的操作 编译器…

关于@JSONField的使用

1.此注解来自jar包com.alibaba.fastjson 今天分享一个有意思的事情。这个注解作用与类的属性上&#xff0c;如下&#xff1a; ApiModelProperty(value"开始时间,格式:yyyy-MM-dd",required true) JSONField(name"start_date",ordinal 1) private String…

扫盲!PRINCE2认证6大常见问题集锦!

一&#xff0c;什么是PRINCE2认证&#xff1f; PRINCE2是PRoject IN Controlled Environment&#xff08;受控环境下的项目管理&#xff09;的简称&#xff0c;也叫国际项目管理师认证&#xff0c;是英国商务部(OGC)在1996年开始推广世界三大项目管理体系之一。 PRINCE2是一套…

API数据安全风险飙升! 3场景1实践看美创科技API-SMAC有效防护

在某次实战攻防演练中&#xff0c;防守方层层布防&#xff0c;搭建了十分健全的防御体系&#xff0c;本以为万无一失&#xff0c;结果靶标悄无声息被拿下。事后溯源中才发现&#xff0c;一个存在未授权访问的历史API&#xff0c;成为了突破口&#xff0c;敏感信息被红队获取&am…

【LeetCode 75】第二十一题(1207)独一无二的出现次数

目录 题目: 示例: 分析: 代码运行结果: 题目: 示例: 分析: 用两个unordered_map来分别存放每个数字的出现次数和出现的次数这个数,有点绕,比如说有给的数组有两个1,那么第一个map存放的是(1,2),表示1这个数子出现了两次,而第二个map存放的是(2,true),表示有出现次数为2的数…

python——案例11:数值交换

案例11&#xff1a;数值交换xinput(输入一个数值赋值给x&#xff1a;) yinput(输入一个数值赋值给y&#xff1a;)tempx #创建临时变量&#xff0c;以此变量为基础进行逐次交换 xy ytemp print(交换后的X的值是:{}.format(x)) # print(交换后的Y的值是:{}.format(y)) #

java【native关键字】

描述&#xff1a; native只能修饰方法&#xff0c;表示这个方法的方法体代码不是用java语言实现的&#xff0c;而是由c/c语言编写的。但是对于java程序员来说&#xff0c;可以当作java的方法一样正常去调用它&#xff0c;或者子类重写它 语法&#xff1a; 用在方法的返回值类…

Chrome开发者工具探秘:元素面板的神奇魔法与实战解析

作为一名网络爬虫大师&#xff0c;我深知Chrome开发者工具中的元素面板是探索和理解网页结构的重要工具。在本文中&#xff0c;我将详细介绍元素面板的各项功能与使用方法&#xff0c;并通过实际案例&#xff0c;带您领略这个神奇魔法的威力。 元素面板&#xff1a;解读网页的…

本地跑Mapreduce程序的相关配置

本地跑MapReduce程序需要配置的代码 为了在本地运行MapReduce程序&#xff0c;需要加如下的东西 在项目中创建一个如图所示的包&#xff1a;org.apache.hadoop.io.nativeio&#xff0c;并在该包下面创建一个名为&#xff1a;NativeIO的类&#xff08;注意&#xff1a;名字不能…

AD19 基础应用技巧(PCB设置快捷键)

众所周知&#xff0c;学会一个软件的快捷键操作可以大大提高我们的工作效率。 那么&#xff0c;Altium Designer软件如何设置快捷键&#xff1f; 以设置走线/放置过孔为例。 菜单栏 - 【放置】- 然后【Ctrl 鼠标左键 单击过孔】进入【Edit Command】界面。 在快捷方式一栏…

247 个经典实用有趣的 Python 实例附源码

今天给大家整理了 247 个经典实用有趣的 Python 实例&#xff0c;185 页代码齐全可复制 pdf&#xff0c;几乎涵盖了 Python 各个方面的知识点&#xff0c;即可以帮助小白快速全面的学习 Python&#xff0c;也可以让老手通过实战练习来查缺补漏。 福利&#xff1a;文末有chat-g…