numpy中的线性代数

Posted saber9

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了numpy中的线性代数相关的知识,希望对你有一定的参考价值。

矩阵积

import numpy as np
a = np.array([[1,2],[3,4]])
b = np.array([[5,6],[7,8]])
print(np.vdot(a,b)) # vdot() 矩阵点积
# 矩阵内积计算:对应元素乘积之和,如例结果为:1*5+2*6+3*7+4*8

print(np.inner(a,b)) # inner() 矩阵内积
"""
矩阵内积计算:对于一维数组内积就是对应元素乘积之和
对于多维数组,则在最后一个轴上的元素对应乘积和
如例:a = [[a1,a2],[b1,b2]] b = [[c1,c2],[d1,d2]]
内积结果为:c = [[a1c1+a2c2, a1d1+a2d2],[b1c1+b2c2, b1d1+b2d2]]
"""

print(np.dot(a,b)) # dot() 矩阵乘积
""""
矩阵乘积:对于一维数组就是对应元素之和
对于多维数组,则是第一个数组的最后一轴上的所有元素与第二个数组的倒数第二维的元素乘积和
如例二维数组:a = [[a1,a2],[b1,b2]] , b = [[c1,c2],[d1,d2]]
结果为:c = [[a1c1+a2d1, a1c2+a2d2],[b1c1+b2d1, b1c2+b2d2]]
如例三维数组:a = [[[a1,a2,a3],[b1,b2,b3]],[[aa1,aa2,aa3],[bb1,bb2,bb3]]]
b = [[[c1,c2],[d1,d2],[e1,e2]],[[cc1,cc2],[dd1,dd2],[ee1,ee2]]]
结果为:c = [[[[a1c1+a2d1+a3e1, a1c2+a2d2+a3e2],[a1cc1+a2dd1+a3ee1, a1cc2+a2dd2+a3ee2]]
[[b1c1+b2d1+b3e1, b1c2+b2d2+b3e2],[b1cc1+b2dd1+b3ee1, b1cc2+b2dd2+b3ee2]]]
[[[aa1c1+aa2d1+aa3e1, aa1c2+aa2d2+aa3e2],[aa1cc1+aa2dd1+aa3ee1, aa1cc2+aa2dd2+aa3ee2]]
[[bb1c1+bb2d1+bb3e1, bb1c2+bb2d2+bb3e2],[bb1cc1+bb2dd1+bb3ee1, bb1cc2+bb2dd2+bb3ee2]]]]
对于dot来说多维数组都是第一个数组最后一维的每一行和第二维数组倒数第二维的每一列乘积和
"""

print(np.matmul(a,b)) # matmul() 矩阵乘积
"""
matmul:对于都是一维数组情况下,就是两数组对应元素乘积之和
对于其中一个数组是一维情况下,这个一维数组会被广播,但结果会再将这个维度去除
如例:a = [[a,b,c],[d,e,f]] b = [x,y,z]
结果为:c = [ax+by+cz, dx+ey+fz]
相当于将第一个数组的每一行和第二个一维数组的每个元素的乘积之和
对于都是二维数组则结果和 dot()矩阵乘积一样,都每一行于每一列的乘积和
如果是二维以上,则和dot不同
如例三维情况:a = [[[a1,a2,a3],[b1,b2,b3]],[[aa1,aa2,aa3],[bb1,bb2,bb3]]]
b = [[[c1,c2],[d1,d2],[e1,e2]],[[cc1,cc2],[dd1,dd2],[ee1,ee2]]]
结果为:c = [[[a1c1+a2d1+a3e1, a1c2+a2d2+a3e2],[b1c1+b2d1+b3e1, b1c2+b2d2+b3e2]]
[[aa1cc1+aa2dd1+aa3ee1, aa1cc2+aa2dd2+aa3ee2],[bb1cc1+bb2dd1+bb3ee1, bb1cc2+bb2dd2+bb3ee2]]]
和dot不同,matmul是将最后两维作为向量乘积,就是将0轴的对应位置的元素矩阵乘积
"""
print(‘=============================‘)
c = np.array([[1,2,3],[11,22,33]])
d = np.array([4,5,6])
print(np.matmul(c,d))

      

以上是关于numpy中的线性代数的主要内容,如果未能解决你的问题,请参考以下文章

如何在android中的地图片段内中心线性布局?

Python与线性代数——Numpy中的matrix()和array()的区别

资源|用Python和NumPy学习《深度学习》中的线性代数基础

numpy中的线性代数

如何创建片段以重复变量编号中的代码行

垂直线性布局中的多个片段