线性代数
1. 转置
numpy.transpose(a,axes=None)
:获取 a
的转置(一个 array-like
对象)。其中 axes
是一个整数列表,指定交换轴。如果 axes
未指定,则默认翻转维度。
2. 逆矩阵
numpy.linalg.inv(a)
:获取 a
的逆矩阵(一个 array-like
对象)。
- 如果传入的是多个矩阵,则依次计算这些矩阵的逆矩阵。
- 如果
a
不是方阵,或者a
不可逆则抛出异常
3. 单位矩阵
numpy.eye(N[, M, k, dtype])
:返回一个二维单位矩阵行为 N
,列为 M
,对角线元素为 1,其余元素为 0。 M
默认等于 N
。 k
默认为 0 表示对角线元素为 1(单位矩阵),如为正数则表示对角线上方一格的元素为 1(上单位矩阵),如为负数表示对角线下方一格的元素为 1(下单位矩阵)
4. 点积
numpy.dot(a, b, out=None)
:计算两个 array-like
对象的点乘。
- 如果是二维矩阵,则点乘就是代数上的矩阵乘法
- 如果是一维向量,则点乘就是向量的内积
- 如果是标量,则点乘就是普通乘法
- 如果是
N
维数组,则是a
的最后一个轴与b
的次最后轴之间的乘积和
5. 向量点积
numpy.vdot(a, b)
:返回一维向量之间的点积。如果 a
和 b
是多维数组,则展平成一维再点积。
6. 向量外积
numpy.outer(a, b, out=None)
:返回一维向量之间的外积。如果 a
和 b
是多维数组,则展平成一维再外积。 假设 a = [a0, a1, ..., a_M]
, b = [b0, b1, ..., b_N]
,则外积为:
[
[a0*b0 a0*b1 ... a0*b_N ]
[a1*b0 .
[ ... .
[a_M*b0 a_M*b_N ]
]
7. 叉乘
numpy.cross(a, b, axisa=-1, axisb=-1, axisc=-1, axis=None)
:计算两个向量之间的叉乘。叉积用于判断两个三维空间的向量是否垂直。要求 a
和 b
都是二维向量或者三维向量,否则抛出异常。(当然他们也可以是二维向量的数组,或者三维向量的数组,此时一一叉乘)
8. 对角线和
numpy.trace(a, offset=0, axis1=0, axis2=1, dtype=None, out=None)
:返回对角线的和。如果 a
是二维的,则直接选取对角线的元素之和( offsert=0
),或者对角线右侧偏移 offset
的元素之和
即选取
a[i,i+offset]
之和
- 如果
a
不止二维,则由axis1
和axis2
指定的轴选取了取对角线的矩阵。 - 如果
a
少于二维,则抛出异常
9. 计算线性方程的解 Ax=b
numpy.linalg.solve(a,b)
:计算线性方程的解 ax=b
,其中 a
为矩阵,要求为秩不为 0 的方阵, b
为列向量(大小等于方阵大小);或者 a
为标量, b
也为标量。
如果
a
不是方阵或者a
是方阵但是行列式为 0,则抛出异常
10. 特征值
numpy.linalg.eig(a)
:计算矩阵的特征值和右特征向量。如果不是方阵则抛出异常,如果行列式为 0 则抛出异常。
11. 奇异值分解
numpy.linalg.svd(a, full_matrices=1, compute_uv=1)
:对矩阵 a
进行奇异值分解,将它分解成 u*np.diag(s)*v
的形式,其中 u
和 v
是酉矩阵, s
是 a
的奇异值组成的一维数组。 其中:
full_matrics
:如果为True
,则u
形状为(M,M)
,v
形状为(N,N)
;否则u
形状为(M,K)
,v
形状为(K,N)
,K=min(M,N)
compute_uv
:如果为True
则表示要计算u
和v
。默认为True
。- 返回
u
、s
、v
的元组 - 如果不可分解则抛出异常
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论