线性代数(如矩阵乘法、矩阵分解、⾏列式以及其他⽅阵数学 等)是任何数组库的重要组成部分。不像某些语⾔(如 MATLAB),通过*对两个⼆维数组相乘得到的是⼀个元素级的 积,⽽不是⼀个矩阵点积。因此, NumPy提供了⼀个⽤于矩阵 乘法的dot函数(既是⼀个数组⽅法也是numpy命名空间中的⼀ 个函数):
import numpy as np
x = np.array([[1., 2., 3.], [4., 5., 6.]])
x
y = np.array([[6., 23.], [-1, 7], [8, 9]])
y
x.dot
x.dot(y)
np.dot
x.dot(y)等价于np.dot(x, y)
np.dot(x, y)
⼀个⼆维数组跟⼀个⼤⼩合适的⼀维数组的矩阵点积运算之后将 会得到⼀个⼀维数组:
np.dot(x, np.ones(3))
@符
@符(类似Python 3.5)也可以⽤作中缀运算符,进⾏矩阵乘 法
numpy.linalg中有⼀组标准的矩阵分解运算以及诸如求逆和⾏列 式之类的东⻄。它们跟MATLAB和R等语⾔所使⽤的是相同的⾏ 业标准线性代数库,如BLAS、 LAPACK、 Intel MKL(Math Kernel Library,可能有,取决于你的NumPy版本)等
from numpy.linalg import inv, qr
X = np.random.randn(5, 5)
X
mat = X.T.dot(X)#点击
mat
inv(mat)#计算方针的逆
mat.dot(inv(mat))
q, r = qr(mat)#计算qr分解
r
q
常用的numpy.linalg函数