【学习笔记】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 字符串,以确保正确执行所需的操作。

相关推荐
charlee445 分钟前
CMake构建学习笔记12-libzip库的构建
c++·学习·zip·cmake·构建
相与还24 分钟前
纯vue实现笔记系统
前端·vue.js·笔记
送外卖的CV工程师2 小时前
STM32基于HAL库使用串口+DMA 不定长接收数据 学习记录
stm32·嵌入式硬件·学习
wang_book2 小时前
Git学习尚硅谷(002 git常用命令)
java·运维·git·学习·spring·运维开发
蓝瑟柳絮2 小时前
学习之SQL语句之DQL(数据库查询语言)
数据库·sql·学习
讯鹏物联网方案集成商2 小时前
讯鹏科技智慧公厕专业供应商,解读智慧公厕有哪些奥秘
学习
@泽栖3 小时前
Mybatis基础操作学习
学习·mybatis
kuiini3 小时前
python学习-04【流程控制语句】
python·学习
十六追梦记3 小时前
Verilog刷题笔记63
笔记
学习天使Alice3 小时前
运用Premiere自学视频剪辑,这些岗位你能胜任!
大数据·学习