【学习笔记】einsum(爱因斯坦求和)

文章目录


einsum(爱因斯坦求和)

einsum 是 Python 中 NumPy 库的一个函数,它提供了一种非常灵活的方式来进行多维数组的对角线操作、矩阵乘法、向量点积、张量积等操作。不过这需要一定的学习成本。本文旨在了解einsum的使用方法,并给出一些演示案列。

基本语法

c 复制代码
numpy.einsum(subscripts, *operands)
  • subscripts 是一个字符串,用来描述操作的输入和输出数组的维度以及如何进行操作。
  • *operands 是一个或多个数组,即要进行操作的输入数组。

对角线操作

c 复制代码
# 对角线操作:
import numpy as np
a = np.arange(9).reshape(3, 3)
print(a)
print("-"*20)
np.einsum('ii', a)  

打印结果为:

矩阵乘法

c 复制代码
# 矩阵乘法
a = np.arange(4).reshape(2, 2)
b = np.arange(4, 8).reshape(2, 2)
print(a)
print("="*20)
print(b)
np.einsum('ij,jk->ik', a, b)

打印结果为:

向量点积

c 复制代码
# 向量点积:
a = np.array([1, 2, 3])
b = np.array([0, 1, 0])
print(a)
print("="*20)
print(b)
np.einsum('i,i', a, b)  # 结果是 2

打印结果为:

张量积

c 复制代码
# 张量积:
a = np.array([1, 2])
b = np.array([3, 4])
print(a)
print("="*20)
print(b)
np.einsum('i,j', a, b)  # 结果是 [[ 3.,  4.], [ 6.,  8.]]

总结

einsum 非常强大,但也需要仔细设计输入的 subscripts 字符串,以确保正确执行所需的操作。

相关推荐
bessyon22 分钟前
信息熵减与医疗交付:以3D检测与设备溯源为例
笔记
comyccccc2 小时前
STM32F407VET6核心板的部分电路绘制学习笔记
笔记·stm32·学习
叼烟扛炮2 小时前
Linux 学习笔记(三十六):并发进阶——读写锁 vs 自旋锁,到底怎么选?
linux·运维·服务器·笔记·学习
是隼人2 小时前
buuctf-pwn [极客大挑战 2019]Not Bad(orw+jmp)题解(学习过程持续更新)
学习·安全·pwn入门·ctf入门
摇滚侠2 小时前
《On Java 中文版 基础卷》阅读笔记 复用 13
java·笔记·python
摇滚侠3 小时前
《大模型是怎样跑起来的(轻科技)》软件篇 阅读笔记
笔记·科技
hss123456783 小时前
天津整装公司横向测评:红杉树大宅整装与业某峰、东某日盛在工期、ENF板材、防水厚度和监理模式上的数据差异
笔记
京存高性能存储3 小时前
POC 实测笔记:全闪存储大带宽压测,顺序读 19.2GiB/s、顺序写 10.8GiB/s,聊聊长尾延迟与持续吞吐问题
人工智能·笔记
lazy H3 小时前
【计算机网络】第 12 篇:IPv6 详解——地址格式、地址类型与双栈网络
网络·经验分享·后端·学习·计算机网络·408
runningshark3 小时前
雅思-speak-lesson5上课笔记
笔记