Python求矩阵的内积、外积、克罗内克直积、Khatri-Rao积

这篇具有很好参考价值的文章主要介绍了Python求矩阵的内积、外积、克罗内克直积、Khatri-Rao积。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

矩阵乘法

线性代数研究的核心对象是矩阵,所谓矩阵就是由 m m m n n n列的数组成的一个举行的数阵,从编程的角度理解,就是二维数组。

作为一种特殊的代数结构,需要为矩阵引入特殊的计算方法,其中矩阵加法、减法相对来说比较直观,而乘法比较复杂,矩阵乘法的定义为

( A B ) i j = ∑ a i k b k j (AB)_{ij}=\sum a_{ik}b_{kj} (AB)ij=aikbkj

python中可直接通过 A @ B A@B A@B来实现,而常用的乘号*表示元素之间一对一的乘法。

此外,numpy中提供了np.matmul进行矩阵乘法。

内积和外积

对于向量 a , b a,b a,b,其内积表示为

a ⋅ b = ∑ i a i b i a\cdot b=\sum_i a_ib_i ab=iaibi

外积则得到一个矩阵

( A B ) i j = a i b j (AB)_{ij}=a_ib_j (AB)ij=aibj

而矩阵乘法则可表示为向量外积之和。

numpy中,提供了内积inner和外积outer,令 a = [ 1 2 3 4 ] , b = [ 0 3 2 1 ] a=\begin{bmatrix}1&2\\3&4\end{bmatrix}, b=\begin{bmatrix}0&3\\2&1\end{bmatrix} a=[1324],b=[0231],则计算结果如下

import numpy as np
a = np.array([1,2,3,1]).reshape(2,2)
b = np.array([0,3,2,1]).reshape(2,2)
print(np.inner(a,b))
'''
[[6 4]
 [3 7]]
'''
print(np.outer(a,b))
'''
[[0 3 2 1]
 [0 6 4 2]
 [0 9 6 3]
 [0 3 2 1]]
'''

直积

numpyscipy.linalg中都实现了矩阵直积,又称克罗内克积

A ⊗ B = [ a 11 B a 12 B ⋯ a 1 n B a 21 B a 22 B ⋯ a 2 n B ⋯ ⋯ ⋯ ⋯ a m 1 B a m 2 B ⋯ a m n B ] A\otimes B=\begin{bmatrix} a_{11}B&a_{12}B&\cdots&a_{1n}B\\ a_{21}B&a_{22}B&\cdots&a_{2n}B\\ \cdots&\cdots&\cdots&\cdots\\ a_{m1}B&a_{m2}B&\cdots&a_{mn}B\\ \end{bmatrix} AB= a11Ba21Bam1Ba12Ba22Bam2Ba1nBa2nBamnB

import scipy.linalg as sl
c = sl.kron(a,b)
print(c)
'''
[[0 3 0 6]
 [2 1 4 2]
 [0 9 0 3]
 [6 3 2 1]]
'''
print(np.kron(a,b))
'''
[[0 3 0 6]
 [2 1 4 2]
 [0 9 0 3]
 [6 3 2 1]]
'''

下面来看一下二者的速度

>>> import timeit
>>> y = np.random.rand(30,30)
>>> x = np.random.rand(30,30)
>>> timeit.timeit(lambda :np.kron(x,y), number=10)
0.023692000002483837
>>> timeit.timeit(lambda :sl.kron(x,y), number=10)
0.05632819999300409

看来这次是scipy输了。

Khatri-Rao积

Khatri-Rao积是两个具有相同列数的矩阵 A , B A,B A,B对应列向量的克罗内克积排列而成的,可表示为

A ⊙ B = [ a 1 ⊗ b 1 a 2 ⊗ b 2 ⋯ a n ⊗ b n ] A\odot B = \begin{bmatrix} a_1\otimes b_1&a_2\otimes b_2&\cdots&a_n\otimes b_n \end{bmatrix} AB=[a1b1a2b2anbn]

Khatri-Rao积满足结合律,在scipy.linalg中,用khatri_rao可求矩阵的Khatri-Rao积。文章来源地址https://www.toymoban.com/news/detail-480968.html

d = sl.khatri_rao(a,b)
print(d)
'''
[[0 6]
 [2 2]
 [0 3]
 [6 1]]
'''

到了这里,关于Python求矩阵的内积、外积、克罗内克直积、Khatri-Rao积的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 矩阵乘法的几种观点,内积外积的理解

    矩阵乘法核心思想(5):内积与外积 u u u 和 v v v 分别是 m × 1 m times 1 m × 1 的向量, u T v u^Tv u T v 是内积( 1 × 1 1 times1 1 × 1 也就是内积得到一个数)(如果看到 u v uv u v 也是内积的意思), u v T uv^T u v T 是外积( m × m m times m m × m ); 秩1矩阵是构建任何矩阵完美的基础砖块

    2024年02月08日
    浏览(38)
  • 点积、内积、外积、叉积、张量积——概念区分

    找 张量积 概念的时候,被各种野路子博客引入的各种“积”搞混了,下面仅以Wikipedia为标准记录各种积的概念。 https://en.wikipedia.org/wiki/Dot_product 在数学中,点积(Dot product)或标量积(scalar product)是一种代数运算,它取两个 相等长度的数字序列 (通常是坐标向量),并返回一个数

    2024年02月05日
    浏览(47)
  • 向量的内积外积哈达玛积

    1.1 定义 从代数角度看,先对两个数字序列中的每组对应元素求积,再对所有积求和,结果即为点积。从几何角度看,点积则是两个向量的长度与它们夹角余弦的积。 表示形式: A T B A^TB A T B 、 A , B A,B A , B 1.2 求解方式 代数形式 向量的 内积 (点乘/数量积)。对两个向量执行点

    2024年02月08日
    浏览(56)
  • 矩阵的模和内积

    设存在一个向量 X = { x 1 , x 2 , x 3 … x n } T X={x_1,x_2,x_3dots x_n}^T X = { x 1 ​ , x 2 ​ , x 3 ​ … x n ​ } T P范数 ∣ ∣ X ∣ ∣ P = ∑ i = 1 n ∣ x i ∣ p p ||X||_P=sqrt[p]{sum_{i=1}^{n}{|x_i|}^p} ∣∣ X ∣ ∣ P ​ = p i = 1 ∑ n ​ ∣ x i ​ ∣ p ​ 1范数(曼哈顿距离) ∣ ∣ X ∣ ∣ 1 = ∑ i = 1

    2024年01月19日
    浏览(31)
  • 【矩阵分析】线性空间、λ矩阵、内积空间、Hermite矩阵、矩阵分解、矩阵范数、矩阵函数

    单纯矩阵 :A可对角化⇔①A可对角化;⇔②n个线性无关的特征向量; ⇔③每个特征值的几何重复度等于代数重复度;⇔④特征值λi对应的pi = n - rank(λiE - A)。 等价矩阵 :A(λ)等价于B(λ)⇔① 任意k阶行列式因子相同Dk(λ);⇔②有相同的不变因子dk(λ);⇔③相同的初等因子,且

    2024年01月22日
    浏览(67)
  • 矩阵内积在深度学习中的潜在力量

    深度学习是人工智能领域的一个重要分支,它主要通过模拟人类大脑中的神经网络来实现智能化的计算和决策。在深度学习中,矩阵内积是一种非常重要的数学操作,它在各种算法中都有着重要的应用。本文将深入探讨矩阵内积在深度学习中的潜在力量,并提供详细的解释和

    2024年04月14日
    浏览(33)
  • matlab dot()函数求矩阵内积,三维 ,多维 详解

    matlab dot()函数求矩阵内积,三维 ,多维 详解   C=dot(A,b,X),这个参数X 只能取1,或者2。1  表示按列,2表示按行,如果没有参数。默认按列。   1)按列优先计算 这是一个1行3列的向量。 2)按行优先计算  C=dot(A,B,2) =[a1*b1+a2*b2+a3*b3 ;a4*b4+a5*b5+a6*b6 ]. 这是一个2行1列的向量 实例如

    2024年02月16日
    浏览(52)
  • 矩阵内积在计算几何中的重要性

    计算几何是一门研究在计算机科学、数学和几何中的几何问题的学科。计算几何问题涉及到点、线、多边形、凸包等几何对象的定义、计算和分析。矩阵内积是线性代数的基本概念,在计算几何中也具有重要的应用价值。在本文中,我们将讨论矩阵内积在计算几何中的重要性

    2024年04月14日
    浏览(50)
  • Bilinear CNN:细粒度图像分类网络,对Bilinear CNN中矩阵外积的解释。

    细粒度图像分类(fine-grained image recognition)的目的是区分类别的子类,如判别一只狗子是哈士奇还是柴犬。细粒度图像分类可以分为基于强监督信息(图像类别、物体标注框、部位标注点等)和基于弱监督信息(只有图像类别),具体可以参考 细粒度图像分类 Bilinear CNN 是

    2024年02月10日
    浏览(36)
  • 矩阵内积在神经网络训练中的关键作用

    在过去的几年里,神经网络技术在人工智能领域取得了显著的进展。这主要归功于深度学习(Deep Learning)技术的发展,深度学习是一种通过多层神经网络自动学习表示的技术,它已经成功地应用于图像识别、自然语言处理、语音识别等多个领域。 在深度学习中,神经网络的训练

    2024年02月21日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包