赞
踩
scipy.linalg官方文档
numpy.linalg官方文档
scipy.linalg 案例
scipy.linalg官方文档功能多于numpy.linalg官方文档,除非不想依赖scipy包则一般使用scipy.linalg
这里是来自numpy.linalg的基础功能
矩阵(向量)之间的成绩,包括矩阵 乘积、(高维)內积、(高维)外积、沿着特定维度的乘积求和、矩阵的幂运算、克罗内克积、高纬度矩阵看作矩阵的叠加
np.dot(A, B) 矩阵乘积
np.multiply(A, B)或者A*B 矩阵对应元素相乘
一个行向量乘以一个列向量称作向量的内积,又叫作点积,结果是一个数;
一个列向量乘以一个行向量称作向量的外积,外积是一种特殊的克罗内克积,结果是一个矩阵
求解矩阵的內积和外积,可以先向量化矩阵,即将一个行或者一列向量看作是一个元素
CSDN-矩阵的內积和外积
numpy.inner
案例
numpy.matmul
- 2个矩阵都是2-D矩阵,等价于普通矩阵乘法
- 2个矩阵都是n-D矩阵,n>2,那么最后两个维度表示矩阵大小,前面是矩阵的堆叠方式
>> a = np.arange(2 * 2 * 4).reshape((2, 2, 4)) >> b = np.arange(2 * 2 * 4).reshape((2, 4, 2)) >> np.matmul(a,b).shape (2, 2, 2)
- 1
- 2
- 3
- 4
- 某一个矩阵时1-D向量,另一个是n-D矩阵,将1-D向量维度前面添加1变成矩阵
Cholesky分解、QR分解、SVD分解
计算特征值与特征向量
特征值(eigenvalue)即方程 Ax = ax 的根,是一个标量。其中,A 是一个二维矩阵,x 是一个一维向量。特征向量(eigenvector)是关于特征值的向量
矩阵/向量的范数、行列式、矩阵的秩、矩阵对角线之和等
numpy.linalg.cond(x, p=None)
根据p值不同可以计算1范数、2范数、无穷范数、最小奇异值、Frobenius范数
numpy.linalg.slogdet(a)
列式的正负*行列式绝对值的自然对数。
鉴于有些特征值无法求解,但这个这里可以求出。
求解线性矩阵方程的解、矩阵的逆、矩阵的伪逆、矩阵的倒数、线性矩阵方程的最小二乘解
这里指的加速,是利用矩阵代替逐行运算,发挥矩阵运算的高效
在做pandas.dataframe的相关计算的时候,可以试图将pandas.dataframe.values其转化为矩阵计算
def dist(row):
return ( (row['x_1'] - row['x_0'])**2 +
(row['y_1'] - row['y_0'])**2 +
(row['z_1'] - row['z_0'])**2 ) ** 0.5
train['dist'] = train.apply(lambda x: dist(x), axis=1)
test['dist'] = test.apply(lambda x: dist(x), axis=1)
加速
train_p_0 = train[['x_0', 'y_0', 'z_0']].values
train_p_1 = train[['x_1', 'y_1', 'z_1']].values
test_p_0 = test[['x_0', 'y_0', 'z_0']].values
test_p_1 = test[['x_1', 'y_1', 'z_1']].values
train['dist_speedup'] = np.linalg.norm(train_p_0 - train_p_1, axis=1)
test['dist_speedup'] = np.linalg.norm(test_p_0 - test_p_1, axis=1)
7min 21s—>1.4s
仔细想想可能用的比较多的会是矩阵的点乘、矩阵的范数、矩阵的幂运算,这些都很方便将一些重复计算转换成矩阵计算
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。