当前位置:   article > 正文

linalg文档笔记 & 利用linalg进行计算加速_np.linalg.cond

np.linalg.cond

官方文档

scipy.linalg官方文档
numpy.linalg官方文档
scipy.linalg 案例
scipy.linalg官方文档功能多于numpy.linalg官方文档,除非不想依赖scipy包则一般使用scipy.linalg

功能介绍

这里是来自numpy.linalg的基础功能

1. Matrix and vector products

矩阵(向量)之间的成绩,包括矩阵 乘积、(高维)內积、(高维)外积、沿着特定维度的乘积求和、矩阵的幂运算、克罗内克积、高纬度矩阵看作矩阵的叠加

PS

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变成矩阵

2. Decompositions

Cholesky分解、QR分解、SVD分解

3. Matrix eigenvalues

计算特征值与特征向量

特征值(eigenvalue)即方程 Ax = ax 的根,是一个标量。其中,A 是一个二维矩阵,x 是一个一维向量。特征向量(eigenvector)是关于特征值的向量

4. Norms and other numbers

矩阵/向量的范数、行列式、矩阵的秩、矩阵对角线之和等

PS

numpy.linalg.cond(x, p=None)
根据p值不同可以计算1范数、2范数、无穷范数、最小奇异值、Frobenius范数
numpy.linalg.slogdet(a)
列式的正负*行列式绝对值的自然对数。
鉴于有些特征值无法求解,但这个这里可以求出。

5. Solving equations and inverting matrices

求解线性矩阵方程的解、矩阵的逆、矩阵的伪逆、矩阵的倒数、线性矩阵方程的最小二乘解

计算加速

这里指的加速,是利用矩阵代替逐行运算,发挥矩阵运算的高效
在做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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

加速

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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

7min 21s—>1.4s

仔细想想可能用的比较多的会是矩阵的点乘、矩阵的范数、矩阵的幂运算,这些都很方便将一些重复计算转换成矩阵计算

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/119021
推荐阅读
相关标签
  

闽ICP备14008679号