当前位置:   article > 正文

Python中的numpy矩阵运算_numpy 多维矩阵除法

numpy 多维矩阵除法

numpy中matrix 和 array的区别

Numpy matrices必须是2维的,但是 numpy arrays (ndarrays) 可以是多维的(1D,2D,3D····ND). Matrix是Array的一个小的分支,包含于Array。所以matrix 拥有array的所有特性。

在numpy中matrix的主要优势是:
(1)相对简单的乘法运算符号。
例如,a和b是两个matrices,那么a*b,就是矩阵积。

>>> import numpy as np
>>> a=np.mat('4 3; 2 1')
>>> b=np.mat('1 2; 3 4')
>>> a
matrix([[4, 3],
        [2, 1]])
>>> b
matrix([[1, 2],
        [3, 4]])
>>> a*b
matrix([[13, 20],
        [ 5,  8]])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

(2)matrix 和 array 都可以通过objects后面加.T 得到其转置。但是 matrix objects 还可以在后面加 .H得到共轭矩阵, 加 .I 得到逆矩阵。相反的是在numpy里面arrays遵从逐个元素的运算,所以array:c 和d的cd运算相当于对应的元素相乘

>>> c=np.array([[4, 3], [2, 1]])
>>> d=np.array([[1, 2], [3, 4]])
>>> c*d
array([[4, 6],
       [6, 4]])
  • 1
  • 2
  • 3
  • 4
  • 5

(3) 运算符的作用也不一样 :

>>> a**2
matrix([[22, 15],
        [10,  7]])
>>> c**2
array([[16,  9],
       [ 4,  1]])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

因为a是个matrix,所以a2返回的是aa,相当于矩阵相乘。而c是array,c2相当于,c中的元素逐个求平方。

(3)numpy中矩阵间的除法运算

>>> a/2
matrix([[2, 1],
        [1, 0]])
>>> a/b
matrix([[4, 1],
        [0, 0]])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

取得是整数

基本运算

import numpy as np
a = np.mat([[-1,2],[2,3]])
b = np.mat([[3,4],[4,5]])
print 'a:\n',a
print 'b:\n',b
print '\n a transpose:\n',a.T #转置
print '\n a inv:\n',np.linalg.inv(a) # 求逆
print "\n a-b: \n",a-b  # a - b,矩阵相减
print "\n a dot b: \n",a*b #2x2矩阵,矩阵相乘
print "\n a/b \n:",b/a  # numpy中的除是对矩阵元素展开计算
print "\n a trace:\n",np.trace(a)  #求迹
eigval,eigvec = np.linalg.eig(a) #特征,特征向量
print "\n a eig value:\n",eigval
print'\n a eig vector:\n',eigvec

a = np.zeros([4,5])
print  '\n all zero \n',a
a = np.ones([7,6])
print  '\n all one \n',a
a = np.eye(4,7)
print  '\n 4x7 diagonal \n',a
a = np.diag(range(5))
print  '\n 5x5 diagonal \n',a
a = np.empty((2,3))
print '\n empty \n',a
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

结果:

a:
[[-1  2]
 [ 2  3]]
b:
[[3 4]
 [4 5]]

 a transpose:
[[-1  2]
 [ 2  3]]

 a inv:
[[-0.42857143  0.28571429]
 [ 0.28571429  0.14285714]]

 a-b: 
[[-4 -2]
 [-2 -2]]

 a dot b: 
[[ 5  6]
 [18 23]]

 a/b 
: [[-3  2]
 [ 2  1]]

 a trace:
2

 a eig value:
[-1.82842712  3.82842712]

 a eig vector:
[[-0.92387953 -0.38268343]
 [ 0.38268343 -0.92387953]]

 all zero 
[[ 0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.]]

 all one 
[[ 1.  1.  1.  1.  1.  1.]
 [ 1.  1.  1.  1.  1.  1.]
 [ 1.  1.  1.  1.  1.  1.]
 ..., 
 [ 1.  1.  1.  1.  1.  1.]
 [ 1.  1.  1.  1.  1.  1.]
 [ 1.  1.  1.  1.  1.  1.]]

 4x7 diagonal 
[[ 1.  0.  0. ...,  0.  0.  0.]
 [ 0.  1.  0. ...,  0.  0.  0.]
 [ 0.  0.  1. ...,  0.  0.  0.]
 [ 0.  0.  0. ...,  0.  0.  0.]]

 5x5 diagonal 
[[0 0 0 0 0]
 [0 1 0 0 0]
 [0 0 2 0 0]
 [0 0 0 3 0]
 [0 0 0 0 4]]

 empty 
[[ 1.  0.  0.]
 [ 0.  0.  0.]]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68

注意矩阵除法运算的结果
print "\n a/b \n:",b/a # numpy中的除是对矩阵元素展开计算

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

闽ICP备14008679号