「Python数据科学」标量、向量、矩阵、张量与多维数组的辨析

引言

在数据科学中,有很多概念,其中,最容易搞混的就是标量、向量、矩阵、张量了。具体到这些概念的落地实现,又与多维数组有着密不可分的联系。

本文就来尝试对这些概念进行简要地梳理,从而更加清晰地理解这些概念及其关系。

本文的主要内容有:

1、标量与向量

2、矩阵与二维数组

3、张量与多维数组

标量与向量

如果初中数学的知识还没有全部归还给老师,那么对标量和向量的概念,应该还是有些印象的。

标量(Scalar)

所谓标量,是一个单一的数值,起到标识大小的作用,只具有大小,而没有方向。

对应到Python中,它可以是整数、浮点数或者复数等,比如5、-10、3.14159都是标量。

向量(Vector)

所谓向量,最大的特点是既有大小,又有方向。

一个向量,在Python或者NumPy中,可以对应到一个一维数组。数组中的每一个值都是一个标量。

如果将向量放置到空间当中,向量的元素个数,对应到向量所处的空间的维度。

所以,一个具有n个元素的向量,在n维空间中,可以标识为从原点(每个维度的标量值均为0)出发,指向这个向量在n维空间中所对应的点。

矩阵与二维数组

矩阵(Matrix)同样是一个数学概念,通常用于在线性代数中,用来表示一组数字或其他数学对象的矩形数组。

矩阵的元素按行和按列的形式进行排列,通常称为“行”和“列”。在计算机科学中,尤其在数据分析、机器学习和图像处理等领域,矩阵的概念与二维数组是密切相关的。

概括来说,矩阵是一个数据概念,其投射、应用到计算机科学中,对应的实现方式通常是二维数组。比如,我们可以通过NumPy定义一个二维数组来表示矩阵。

在机器学习、深度学习中,会反复应用到矩阵的乘法运算,但是,我们只需要知道矩阵乘法的规则, 就足够应付常见的需求场景了。

矩阵的乘法,必须满足:

(M行,N列) x (N行,L列) = (M行,L列)

感兴趣的同学,可以自行检索补充。

在NumPy中可以通过ndarray来表示矩阵,也可以通过matrix,下面通过代码简单演示一下:

首先创建两个二维数组表示矩阵A和B:

e16590f1209ef98ccc79cafa84e39172.jpeg

在NumPy中进行基于ndarry的矩阵相乘(点乘)的方法有3种:

1、np.dot(A, B)

2、np.matmul(A, B)

3、A@B

代码如下:

51baa8f7630e9fc15806a9d7f92bcd4e.jpeg

在NumPy中还提供了matrix直接来表示矩阵,这里只是演示一下,通常还是建议使用ndarray:

首先创建两个matrix:

a16ff403c1645d95dd9fc298b7bbc920.jpeg

同样有3种方法进行矩阵相乘,np.dot()和np.matmul()两个函数是可以通用的,不同于ndarray,matrix可以直接使用*表示矩阵的点乘运算:

479694b9904e40d61965dbc15dc2b80e.jpeg

张量与多维数组

如果没有接触过深度学习,可能对“张量”这个概念比较陌生,甚至从未听过。

张量(Tensor)其实是一个更为广泛的数学概念,它通常用于进行多维数据的表示。在机器学习、深度学习和物理学等多个领域中,张量的使用变得越来越普遍。

由于张量是一个更加广泛的概念,因而可以将标量、向量、矩阵的概念进行统一:

1、标量可以看作是0阶张量。

2、向量可以看作是1阶张量。

3、矩阵可以看作是2阶张量。

4、3阶及3阶以上的张量,通常被称之为高阶张量。

可以通过ndarray分别创建不同阶的张量:

96c8ec1418b9197d1adc09e491b95ee3.jpeg

张量概念的底层,同样是基于多维数组进行存储实现。为了便于使用,在Tensorflow和PyTorch等深度学习框架中,张量都是作为最基本的数据结构进行支持的,可以用于表示输入数据、模型参数等。

比如,使用PyTorch进行张量的创建:

9a2dc4938a51069edd88687787982acc.jpeg

总结

本文简单辨析了标量、向量、矩阵和张量这几个术语的含义,标量、向量和矩阵可以看作是特殊的张量。所有的张量,在Python、NumPy、PyTorch中,底层可以理解为都是以多维数组的形成进行实现。

以上就是本文的全部内容,感谢您的拨冗阅读!

5f784c450ac82ccc7157ca6d26e94aab.jpeg

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

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

相关文章

iOS开发代码块-OC版

iOS开发代码块-OC版 资源分享资源使用详情Xcode自带代码块自定义代码块 资源分享 自提: 通过网盘分享的文件:CodeSnippets 2.zip 链接: https://pan.baidu.com/s/1Yh8q9PbyeNpuYpasG4IiVg?pwddn1i 提取码: dn1i Xcode中的代码片段默认放在下面的目录中…

第十七届山东省职业院校技能大赛 中职组“网络安全”赛项任务书正式赛题

第十七届山东省职业院校技能大赛 中职组“网络安全”赛项任务书-A 目录 一、竞赛阶段 二、竞赛任务书内容 (一)拓扑图 (二)模块A 基础设施设置与安全加固(200分) (三)B模块安全事件响应/网络安全数据取证/…

Git(11)之log显示支持中文

Git(11)之log显示支持中文 Author:Once Day Date:2024年12月21日 漫漫长路有人对你微笑过嘛… 参考文档:GIT使用log命令显示中文乱码_gitlab的log在matlab里显示中文乱码-CSDN博客 全系列文章可查看专栏: Git使用记录_Once_day的博客-CSD…

rabbitmq相关使用

使用rabbitmq实现异步解耦 使用步骤&#xff1a; 1、pom依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </dependency> 2、yml配置文件 spring:rabbitmq:host: 12…

oracle linux8.10+ oracle 23ai安装

介质准备&#xff1a; 数据库23ai https://edelivery.oracle.com 上述网站下载基础版本&#xff0c;本次未使用。 本次是安装了带补丁的版本&#xff1a; Database Release Update 23.6.0.24.10 GoldImage表示带补丁用于直接安装的软件包 查找888.1对应Primary Note for …

使用helm安装canal-server和canal-admin

1.前置条件&#xff1a; 需要电脑有helm kubectl 如果没有的话需要安装环境 2.需要拉取canal-server和canal-admin镜像 拉取镜像的时候可能存在拉取不下来的情况&#xff0c;需要配置&#xff1a; /etc/docker/daemon.json {"registry-mirrors": ["https://do…

使用ForceBindIP绑定应用到指定IP

前言 使用ForceBindIP工具&#xff0c;用户可以轻松地将特定应用程序绑定到指定的IP地址&#xff0c;从而确保应用程序的网络连接通过指定的网络适配器进行。通过在命令提示符下运行ForceBindIP并指定IP地址和应用程序的完整路径&#xff0c;用户能够控制应用程序的网络流量&a…

Windows下安装Rabbit MQ

一、安装环境&#xff1a; 系统&#xff1a;windows11; 环境配置安装&#xff1a;otp_win64_25.3.2.14.exe&#xff08;erlang类库&#xff09;&#xff1b; 服务应用安装&#xff1a;rabbitmq-server-3.12.4.exe&#xff1b; 二、erlang环境&#xff1a; 1.执行…

层序遍历练习

层次遍历 II 给定一个二叉树&#xff0c;返回其节点值自底向上的层次遍历。 &#xff08;即按从叶子节点所在层到根节点所在的层&#xff0c;逐层从左向右遍历&#xff09; 思路 相对于102.二叉树的层序遍历&#xff0c;就是最后把result数组反转一下就可以了。 C代码&…

[Python机器学习]:Anaconda3实践环境安装和使用

文章目录 一&#xff1a;机器学习基本环境安装二&#xff1a;设置环境变量三&#xff1a;检查结果四&#xff1a;创建自己的虚拟环境1&#xff1a;查看虚拟环境: conda env list2&#xff1a;创建新环境:conda create --name envname python3.83&#xff1a;删除环境:conda rem…

重温设计模式--观察者模式

文章目录 观察者模式&#xff08;Observer Pattern&#xff09;概述观察者模式UML图作用&#xff1a;实现对象间的解耦支持一对多的依赖关系易于维护和扩展 观察者模式的结构抽象主题&#xff08;Subject&#xff09;&#xff1a;具体主题&#xff08;Concrete Subject&#xf…

【更新】Docker新手入门教程2:在Windows系统通过compose创建多个mysql镜像并配置应用

文章目录 前言一、运行Docker init生成docker配置文件二、修改创建镜像的配置文件1、添加镜像挂载点 三、【拉取镜像】四、生成Docker 镜像查看生成的镜像 五、修改Compose配置文件3、配置Mysql六、生成Docker容器七、检查容器创建状态总结 前言 在window下通过Docker创建mysq…

lxml 解析xml\html

from lxml import etree# XML文档示例 xml_doc """ <root><book><title>Python编程指南</title><author>张三</author></book><book><title>Python高级编程</title><author>李四</autho…

FFmpeg在python里推流被处理过的视频流

链式算法处理视频流 视频源是本地摄像头 # codinggbk # 本地摄像头直接推流到 RTMP 服务器 import cv2 import mediapipe as mp import subprocess as sp# 初始化 Mediapipe mp_drawing mp.solutions.drawing_utils mp_drawing_styles mp.solutions.drawing_styles mp_holis…

从零开始k8s-部署篇(未完待续)

从零开始k8s 1.部署k8s-部署篇 1.部署k8s-部署篇 本次部署完全学习于华子的博客点击此处进入华子主页 K8S中文官网&#xff1a;https://kubernetes.io/zh-cn 笔者从零开始部署的k8s&#xff0c;部署前置条件为 1.需要harbor仓库&#xff0c;存放镜像&#xff0c;拉取镜像&am…

Pytorch | 利用AI-FGTM针对CIFAR10上的ResNet分类器进行对抗攻击

Pytorch | 利用AI-FGTM针对CIFAR10上的ResNet分类器进行对抗攻击 CIFAR数据集AI-FGTM介绍算法流程初始化迭代更新&#xff08; t 0 t 0 t0 到 T − 1 T - 1 T−1&#xff09;迭代完成 AI-FGTM代码实现AI-FGTM算法实现攻击效果 代码汇总aifgtm.pytrain.pyadvtest.py 之前已经…

视频监控平台:Liveweb视频汇聚融合平台智慧安防视频监控应用方案

Liveweb是一款功能强大、灵活部署的安防视频监控平台&#xff0c;支持多种主流标准协议&#xff0c;包括GB28181、RTSP/Onvif、RTMP等&#xff0c;同时兼容海康Ehome、海大宇等厂家的私有协议和SDK接入。该平台不仅提供传统安防监控功能&#xff0c;还支持接入AI智能分析&#…

【Linux系列】Shell 脚本中的条件判断:`[ ]`与`[[ ]]`的比较

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【LLM论文日更】| 训练大型语言模型在连续潜在空间中进行推理

论文&#xff1a;https://arxiv.org/pdf/2412.06769代码&#xff1a;暂未开源机构 &#xff1a;Meta领域&#xff1a;思维链发表&#xff1a;arxiv 研究背景 研究问题&#xff1a;这篇文章要解决的问题是如何在大语言模型&#xff08;LLMs&#xff09;中实现一种新的推理范式&…

opc da 服务器数据 转 opc ua项目案例

目录 1 案例说明 2 VFBOX网关工作原理 3 应用条件 4 查看OPC DA服务器的相关参数 5 配置网关采集opc da数据 6 用opc ua协议转发采集的数据 7 在服务器上运行仰科OPC DA采集软件 8 案例总结 1 案例说明 在OPC DA服务器上运行OPC DA client软件查看OPC DA服务器的相关参…