转自:https://docs.scipy.org/doc/numpy-1.13.0/reference/routines.linalg.html

1.分解

//其中我觉得可以的就是svd奇异值分解吧,虽然并不知道数学原理

np.linalg.svd(afull_matrices=1compute_uv=1)

a是要分解的(M,N)array;

full_matrices : bool, optional

If True (default), u and v have the shapes (MM) and (NN), respectively. Otherwise, the shapes are (MK) and (KN), respectively, where K = min(MN).

当full_matrices是True时(默认):

>>> d=np.mat("4 11 14;8 7 -2")
>>> d
matrix([[ 4, 11, 14],
[ 8, 7, -2]])
>>> U,sigma,V=np.linalg.svd(d)
>>> U
matrix([[-0.9486833 , -0.31622777],
[-0.31622777, 0.9486833 ]])
>>> V
matrix([[-0.33333333, -0.66666667, -0.66666667],
[ 0.66666667, 0.33333333, -0.66666667],
[-0.66666667, 0.66666667, -0.33333333]])
>>> sigma
array([18.97366596, 9.48683298])
>>> U.shape,sigma.shape,V.shape
((2, 2), (2,), (3, 3))
>>> S=np.zeros((2,3))
>>> S[:2,:2]=np.diag(sigma)
>>> S
array([[18.97366596, 0. , 0. ],
[ 0. , 9.48683298, 0. ]])
>>> U*S*V
matrix([[ 4., 11., 14.],
[ 8., 7., -2.]])

当full_matrices是False时:

>>> U,sigma,V=np.linalg.svd(d,full_matrices=0)
>>> U
matrix([[-0.9486833 , -0.31622777],
[-0.31622777, 0.9486833 ]])
>>> sigma
array([18.97366596, 9.48683298])
>>> V
matrix([[-0.33333333, -0.66666667, -0.66666667],
[ 0.66666667, 0.33333333, -0.66666667]])
>>> S=np.diag(sigma)#####
>>> S
array([[18.97366596, 0. ],
[ 0. , 9.48683298]])
>>> U*S*V
matrix([[ 4., 11., 14.],
[ 8., 7., -2.]])

2.矩阵特征值

np.linalg.eig(a) Compute the eigenvalues and right eigenvectors of a square array.

>>> w,v=LA.eig(np.diag((1,2,3)))
>>> w
array([1., 2., 3.])
>>> v
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
>>> np.diag((1,2,3))
array([[1, 0, 0],
[0, 2, 0],
[0, 0, 3]])

np.linalg.eigvals(g):Compute the eigenvalues of a general matrix.

>>> w2=LA.eigvals(np.diag((1,2,3)))
>>> w2
array([1., 2., 3.])

3.范数和其他数字

3.1 np.linalg.norm(xord=Noneaxis=Nonekeepdims=False):Matrix or vector norm.

Using the axis argument to compute vector norms:axis用来计算矩阵中的向量范数。

>>> a=np.array([3,4])
>>> a
array([3, 4])
>>> LA.norm(a)
5.0
>>> LA.norm(a,ord=1)
7.0
>>> a=np.array([3,-4])
>>> LA.norm(a,ord=1)
7.0
>>> LA.norm(a,ord=np.inf)
4.0
>>> LA.norm(a,ord=-np.inf)
3.0

3.2 np.linalg.cond(xp=None):Compute the condition number of a matrix.

>>> a=np.array([[1, 0, -1], [0, 1, 0], [1, 0, 1]])
>>> a
array([[ 1, 0, -1],
[ 0, 1, 0],
[ 1, 0, 1]])
>>> LA.cond(a)
1.4142135623730951
>>> LA.cond(a,2)
1.4142135623730951
>>> LA.cond(a,1)
2.0

//其中:

p : {None, 1, -1, 2, -2, inf, -inf, ‘fro’}, optional

Order of the norm:

p norm for matrices
None 2-norm, computed directly using the SVD
‘fro’ Frobenius norm
inf max(sum(abs(x), axis=1))
-inf min(sum(abs(x), axis=1))
1 max(sum(abs(x), axis=0))
-1 min(sum(abs(x), axis=0))
2 2-norm (largest sing. value)
-2 smallest singular value

inf means the numpy.inf object, and the Frobenius norm is the root-of-sum-of-squares norm.

使用的范数,默认是L2范数。

3.3 np.linalg.det(a):Compute the determinant of an array.

>>> a = np.array([[1, 2], [3, 4]])
>>> LA.det(a)
-2.0000000000000004

3.4 np.linalg.matrix_rank(Mtol=None):Return matrix rank of array using SVD method

>>> LA.matrix_rank(np.eye(4))
4
>>> I=np.eye(4)
>>> I[-1,-1]=0
>>> I
array([[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 0.]])
>>> LA.matrix_rank(I)
3

3.5 trace(aoffset=0axis1=0axis2=1dtype=Noneout=None)

>>> np.trace(np.eye(4))
4.0

矩阵对角线上的和。

4.解方程和逆矩阵

4.1 np.linalg.solve(a,b):Solve a linear matrix equation, or system of linear scalar equations.

Solve the system of equations 3 * x0 + x1 = 9 and x0 + 2 * x1 = 8:

>>> a = np.array([[3,1], [1,2]])
>>> b = np.array([9,8])
>>> x = np.linalg.solve(a, b)
>>> x
array([ 2., 3.])

check:

>>> np.allclose(np.dot(a, x), b)
True

4.2 np.linalg.lstsq(abrcond=-1):Return the least-squares solution to a linear matrix equation

最小二乘求解。

np.Linear algebra学习的更多相关文章

  1. PYTHON替代MATLAB在线性代数学习中的应用(使用Python辅助MIT 18.06 Linear Algebra学习)

    前言 MATLAB一向是理工科学生的必备神器,但随着中美贸易冲突的一再升级,禁售与禁用的阴云也持续笼罩在高等学院的头顶.也许我们都应当考虑更多的途径,来辅助我们的学习和研究工作. 虽然PYTHON和众 ...

  2. Python Linear algebra

    Linear algebra 1.模块文档 NAME numpy.linalg DESCRIPTION Core Linear Algebra Tools ---------------------- ...

  3. 读Linear Algebra -- Gilbert Strang

    转眼间我的学士学位修读生涯已经快要到期了,重读线性代数,一是为了重新理解Algebra的的重要概念以祭奠大一刷过的计算题,二是为了将来的学术工作先打下一点点(薄弱的)基础.数学毫无疑问是指导着的科研方 ...

  4. 【线性代数】Linear Algebra Big Picture

    Abstract: 通过学习MIT 18.06课程,总结出的线性代数的知识点相互依赖关系,后续博客将会按照相应的依赖关系进行介绍.(2017-08-18 16:28:36) Keywords: Lin ...

  5. Linear Algebra From Data

    Linear Algebra Learning From Data 1.1 Multiplication Ax Using Columns of A 有关于矩阵乘法的理解深入 矩阵乘法理解为左侧有是一 ...

  6. Linear Algebra lecture1 note

    Professor: Gilbert Strang Text: Introduction to Linear Algebra http://web.mit.edu/18.06   Lecture 1 ...

  7. 算法库:基础线性代数子程序库(Basic Linear Algebra Subprograms,BLAS)介绍

    调试DeepFlow光流算法,由于作者给出的算法是基于Linux系统的,所以要在Windows上运行,不得不做大量的修改工作.移植到Windows平台,除了一些头文件找不到外,还有一些函数也找不到.这 ...

  8. 线性代数导论 | Linear Algebra 课程

    搞统计的线性代数和概率论必须精通,最好要能锻炼出直觉,再学机器学习才会事半功倍. 线性代数只推荐Prof. Gilbert Strang的MIT课程,有视频,有教材,有习题,有考试,一套学下来基本就入 ...

  9. Here’s just a fraction of what you can do with linear algebra

    Here’s just a fraction of what you can do with linear algebra The next time someone wonders what the ...

随机推荐

  1. 使用Curator操作ZooKeeper

    Curator是Netflix公司开源的一个ZooKeeper client library,用于简化ZooKeeper客户端编程.它包含如下模块: Framework:Framework是ZooKe ...

  2. go 的 mysql 的简单操作

    关于 sql:https://studygolang.com/articles/3022 异常处理: http://www.jianshu.com/p/f30da01eea97 一.数据库的连接及初始 ...

  3. ERP项目实施记录05

    周四继续进行流程演练,把第一个销售订单的物料给领了出来,走完了"物流". 关于运用一个新系统大概会经历以下阶段: 未知--了解--熟悉--改善--依赖 未知:有期待.担心.抗拒,需 ...

  4. Docker多主机网络

    网络术语概念 二层交换技术:工作在OSI七层网络模型的第二层,通过MAC地址进行帧转发 三层交换技术:也称为IP交换技术,工作在OSI七层网络模型的第三层,通过IP地址进行包转发.它解决了局域网中网段 ...

  5. [No0000145]深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing)理解堆与栈2/4

    前言   虽然在.Net Framework 中我们不必考虑内在管理和垃圾回收(GC),但是为了优化应用程序性能我们始终需要了解内存管理和垃圾回收(GC).另外,了解内存管理可以帮助我们理解在每一个程 ...

  6. Etcd+Confd实现Nginx配置文件自动管理

    一.需求 我们使用Nginx做七层负载均衡,后端是Tomcat.项目采用灰度发布方式,每次项目升级,都要手动先从Nginx下摘掉一组,然后再升级这组,当项目快速迭代时,手动做这些操作显然会增加部署时间 ...

  7. [daily][ulimit][coredump] 快速简单粗暴的用coredump调试

    http://www.cnblogs.com/hugetong/p/6898608.html 一个程序挂掉了, 怎么办?  启动coredump 写一个脚本: [root@T185 ~]# cat / ...

  8. Java8 in action

    解决的问题: behavior parameterization,即可以把一段code,逻辑作为参数传入: 这样做的目的,当然为了代码抽象和重用,把变化的逻辑抽象出去: 在java中,如果要实现beh ...

  9. jmeter发送https请求

  10. 20165225《Java程序设计》第三周学习总结

    20165225<Java程序设计>第三周学习总结 1.视频与课本中的学习: 遇到的问题: 问题如下,无法编译. 最后经同学点出要放在同一个打包的文件夹里,于是就运行成功了,下面是4_15 ...