首页 > 编程知识 正文

python矩阵运算库,python中如何输入矩阵

时间:2023-05-03 14:06:35 阅读:161785 作者:1381

最简单的解决方案

使用numpy.dot或a.dot(b )。 请参阅此处的文档。

a=NP.array ([ 5,1,3 ],

[ 1,1,1 ],

[ 1,2,1 ] )

b=NP.array ([ 1,2,3 ] ) )。

printa.dot(b )。

array ([ 16,6,8 ] )

这是因为numpy数组按元素在标准操作*、-和/数组上工作,而不是按矩阵工作。 而是尝试使用numpy.matrix,*将其视为矩阵乘法。

其他解决方案

我知道还有其他选择:

如下所述,使用python3.5时,@运算符按预期方式工作。

打印(a @ b ) )。

array ([ 16,6,8 ] )

过度杀伤时,请使用numpy.einsum。 本文档为你提供了它的工作原理,但说实话,直到你读了这个答案并自己动手摆弄它,你还没有充分理解如何使用它。

NP.Einsum(Ji,i-j ),a,b ) )。

array ([ 16,6,8 ] )

从2016年年中(numpy 1.10.1 ) )开始,尝试使用Experimenting numpy.matmul。 numpy.dot的作用与以下两个主要异常相同: 没有标量乘法,但可以在矩阵堆栈中使用。

NP.matmul(a,b ) )。

array ([ 16,6,8 ] )

numpy.inner也以同样的方式工作。 numpy.dot对矩阵-向量乘法表示不同的矩阵基质和kadyl乘法。 (请看关于维基百科之间差异的内积和点积很普遍,或者其SO回答是关于numpy的实现。 )。

NP.inner(a,b ) )。

array ([ 16,6,8 ] )

# bewareusingformatrixmultiplicationthough!

b=a.T

NP.dot(a,b ) )。

array ([ 35,9,10 ],

[ 9,3,4 ],

[ 10,4,6 ] )

NP.inner(a,b ) )。

array ([ 29,12,19 ],

[ 7,4,5 ],

[ 8,5,6 ] )

边壳难选

如果存在kadyl (维数大于或等于1的数组),则numpy.tensordot可以将axes=1与可选参数一起使用。

NP.tensordot(a,b,axes=1) )。

array ([ 16,6,8 ] )

如果有numpy.vdot复数矩阵,请不要使用。 矩阵展平为一维数组,试图在展平的矩阵和向量之间找到复杂的共轭点积(由于大小不匹配而失败) (n*mvs n )。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。