sympy张量初步:乘法和缩并

Array

一般来说,一维数组可对应向量;二维数组对应矩阵,高维数组则对应张量。故而与高维数组相关的大部分函数,都封装在sympy.tensor中。但另一方面,数组本身是一个非常通用的数据类型,故而可以直接从sympy中导入

import sympy
from sympy import Array
a1 = Array([[1, 2], [3, 4], [5, 6]])
a1.shape    # (3,2)
a1.rank()   # 2阶张量
print(sympy.latex(a1))

a 1 = [ 1 2 3 4 5 6 ] a_1 = \left[\begin{matrix}1 & 2\\3 & 4\\5 & 6\end{matrix}\right] a1= 135246

由于 a 1 a_1 a1是二阶张量,故而可以转换为矩阵

a1.tomatrix()
'''
Matrix([
[1, 2],
[3, 4],
[5, 6]])
'''

Array类型的元素也可以是符号,示例如下

from sympy.abc import x, y, z
a2 = Array([[[x, y], [z, x*z]], [[1, x*y], [1/x, x/y]]])
a2.shape    # (2,2,2)
a2.rank()   # 3阶张量
print(sympy.latex(a2))

a 2 = [ [ x y z x z ] [ 1 x y 1 x x y ] ] a_2=\left[\begin{matrix}\left[\begin{matrix}x & y\\z & x z\end{matrix}\right] & \left[\begin{matrix}1 & x y\\\frac{1}{x} & \frac{x}{y}\end{matrix}\right]\end{matrix}\right] a2=[[xzyxz][1x1xyyx]]

因为这个数组的阶数为3,所以无法调用tomatrix转换为矩阵。

乘法和缩并

回顾向量之间的运算,如果两个向量分别是行向量和列向量,且元素个数相同,那么二者相乘则有两种结局,示例如下

[ c d ] [ a b ] = [ c a c b d a d b ] [ a b ] [ c d ] = a c + b d \begin{bmatrix}c\\d\end{bmatrix}\begin{bmatrix}a&b\end{bmatrix} =\begin{bmatrix}ca&cb\\ da&db\end{bmatrix}\quad \begin{bmatrix}a&b\end{bmatrix} \begin{bmatrix}c\\d\end{bmatrix}=ac+bd [cd][ab]=[cadacbdb][ab][cd]=ac+bd

若将向量看作张量,那么前者是张量乘法,后者则是在乘法之后进行了缩并操作。在sympy中,tensorproduct即为张量乘法,tensorcontraction则为缩并

from sympy import tensorproduct, tensorcontraction
from sympy.abc import a,b,c,d
A = Array([a,b])
B = Array([c,d])
p = tensorproduct(A, B)
print(sympy.latex(p))
t = tensorcontraction(p, (0,1))
sympy.latex(t)    # ac + bd

其中,tensorcontraction的第二个参数 ( 0 , 1 ) (0,1) (0,1)表示被缩并的轴。

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

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

相关文章

Excel报表框架(ExcelReport)极简化解决复杂报表导出问题

Excel Report 耗费了半个月的时间,终于在元旦这三天把报表框架开发完成了,使用该框架你可以非常方便的导出复杂的Excel报表。 项目开源地址: GiteeGithub 前言 不知道各位在使用POI开发报表导出过程中遇到过以下的情况: 频繁…

从零开始配置kali2023环境:镜像保存和导入

对原始的镜像做了一些改动,然后把当前容器状态打包为新的镜像,这样以后可以部署到其他地方了,而不用再安装软件等改动等等 1.查看容器id ┌──(holyeyes㉿kali2023)-[~] └─$ sudo docker ps ┌──(holyeyes㉿kali2023)-[~] └─$ s…

WPF中MVVM使用总结

背景:PropertyChanged和Command总是没有记住怎么写 PropertyChanged: public event PropertyChangedEventHandler? PropertyChanged; protected virtual void OnPropertyChanged([CallerMemberName] string propertyName null) {PropertyChanged?.In…

react + redux 之 美团案例

1.案例展示 2.环境搭建 克隆项目到本地(内置了基础静态组件和模版) git clone http://git.itcast.cn/heimaqianduan/redux-meituan.git 安装所有依赖 npm i 启动mock服务(内置了json-server) npm run serve 启动前端服务 npm…

ES6之Proxy详解

✨ 专栏介绍 在现代Web开发中,JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性,还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言,JavaScript具有广泛的应用场景&#x…

六、Redis 分布式系统 —— 超详细操作演示!

六、Redis 分布式系统 —— 超详细操作演示! 六、Redis 分布式系统6.1 数据分区算法6.1.1 顺序分区6.1.2 哈希分区 6.2 系统搭建与运行6.2.1 系统搭建6.2.2 系统启动与关闭 6.3 集群操作6.3.1 连接集群6.3.2 写入数据6.3.3 集群查询6.3.4 故障转移6.3.5 集群扩容6.3…

BGP路由知识点

目录 1.BGP的工作原理: 2.BGP路由的一般格式: 3.三种不同的自治系统AS 4.BGP的路由选择 5.BGP的四种报文 BGP(Border Gateway Protocol)是一种用于自治系统(AS)之间的路由选择协议。它是互联网中最常用…

Linux:apache优化(9)—— 统计访问量|统计PV 和UV

统计日志文件中访问数量最多的10个IP地址: cat access_log | awk {print $1} |sort -rn|uniq -c|sort -rn|head awk {state[$1]}END{for(i in state){print state[i],i}} access_log|sort -rn|head 注解 awk { print $1}:取数据的低1域(第1列…

MNIST数据集

MNIST数据集 大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天,让我们一同探索深度学习领域中备受瞩目的"MNIST数据集",解析它在…

点云从入门到精通技术详解100篇-基于几何特征增强和层次拓扑优化的大规模点云直线段提取(续)

目录 3.3 三维直线段的提取 3.3.1 基于 DexiNed 提取边缘图 3.3.2 2D-3D 反投影

Spark SQL中的聚合与窗口函数

Spark SQL是Apache Spark的一个模块,用于处理结构化数据。在数据分析和处理中,聚合和窗口函数是非常重要的工具,它们可以对数据进行各种汇总、计算和分析。本文将深入探讨Spark SQL中的聚合与窗口函数,包括聚合函数、分组操作、窗…

算法训练营Day34(贪心算法)

1005.K次取反后最大化的数组和 1005. K 次取反后最大化的数组和 - 力扣&#xff08;LeetCode&#xff09; 秒了 class Solution {public int largestSumAfterKNegations(int[] nums, int k) {Arrays.sort(nums);// -4 -3 -2 -1 5//-2 -2 0 2 5int last -1;for(int i 0;i<…

【JavaFX】基于JavaFX11 构建可编辑、对象存储、修改立即保存、支持条件过滤的TableView

文章目录 效果设计思路二、使用步骤前提:自定义TableView的失去焦点事件1. 创建实体类2.读取本地文件数据3. 定义表格TableView总结效果 如图所示,这是一个存储application.properties内容的表格。这里的文件application.properties是从Linux服务器上获取来的。 当点击检索按…

【算法】使用位运算解算法题(C++)

文章目录 0. 位运算 基本介绍1. 位运算基本使用 连带题目191.位1的个数338.比特位计数461.汉明距离136.只出现一次的数字260.只出现一次的数字III 2. 使用位运算解决算法题面试题01.01.判定字符是否唯一371.两整数之和137.只出现一次的数字II面试题17.04.消失的数字面试题17.1…

SDG大数据平台简介

联合国可持续发展目标&#xff08;Sustainable Development Goals&#xff09;缩写SDGs&#xff0c;是联合国制定的17个全球发展目标&#xff0c;在2000-2015年千年发展目标&#xff08;MDGs&#xff09;到期之后继续指导2015-2030年的全球发展工作。&#xff08;摘自百度&…

软考网络工程师考试大纲(2018年最新版)

本书是全国计算机专业技术资格考试办公室组织编写的网络工程师考试大纲,本书除大纲内容外,还包括了人力资源和社会保障部、工业和信息化部的有关文件以及考试简介。 网络工程师考试大纲是针对本考试的计算机网络中级资格制定的。通过本考试的考生,可被用人单位择优聘任为工…

React学习计划-React16--React基础(八)react-redux使用与优化,纯函数介绍

笔记gitee地址 学习了 redux,为什么还要讲react-redux呢&#xff1f; redux不是专门为react所创建的,只不过在某一刻&#xff0c;react和redux看对眼了&#xff0c;所以俩人走到了一起&#xff0c;所以为了更好的支持redux,react官方出了react-redux来更好的支持redux 1. react…

Couchdb 垂直权限绕过漏洞(CVE-2017-12635)

一、漏洞描述 Apache CouchDB是一个开源数据库&#xff0c;专注于易用性和成为”完全拥抱web的数据库”。它是一个使用JSON作为存储格式&#xff0c;JavaScript作为查询语言&#xff0c;MapReduce和HTTP作为API的NoSQL数据库。应用广泛&#xff0c;如BBC用在其动态内容展示平台…

【Unity入门】UGUI之Slider(滑动条)

目录 一、什么是Slider&#xff1f;二、Slider属性与功能 一、什么是Slider&#xff1f; Slider控件允许用户可以通过鼠标来在预先确定的范围调节数值 我们可以在Hierarchy视图右键 -> UI ->Slider来创建滑动条 通过上图可以发现Unity内置的Slider主要有3部分&#x…

AUTOSAR从入门到精通- 虚拟功能总线(RTE)(二)

目录 前言 基于Vector的Autosar 1. Autosar简介 1.1 SWC软件单元 1.2 BSW分层 1.3 运行环境RTE