Python中Numpymat的使⽤详解
前⾯介绍过⽤dnarray来模拟,但mat更符合矩阵,这⾥的mat与Matlab中的很相似。(mat与matrix等同)
基本操作
>>> m= np.mat([1,2,3]) #创建矩阵
>>> m
matrix([[1, 2, 3]])
>>> m[0]        #取⼀⾏
matrix([[1, 2, 3]])
>>> m[0,1]      #第⼀⾏,第2个数据
2
>>> m[0][1]      #注意不能像数组那样取值了
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python2.7/site-packages/numpy/matrixlib/defmatrix.py", line 305, in __getitem__
out = N.ndarray.__getitem__(self, index)
IndexError: index 1 is out of bounds for axis 0 with size 1
#将Python的列表转换成NumPy的矩阵
>>> list=[1,2,3]
>>> mat(list)
matrix([[1, 2, 3]])
#Numpy dnarray转换成Numpy矩阵
>>> n = np.array([1,2,3])
>>> n
array([1, 2, 3])
>>> np.mat(n)
matrix([[1, 2, 3]])
#排序
>>> m=np.mat([[2,5,1],[4,6,2]])  #创建2⾏3列矩阵
>>> m
matrix([[2, 5, 1],numpy库功能
[4, 6, 2]])
>>> m.sort()          #对每⼀⾏进⾏排序
>>> m
matrix([[1, 2, 5],
[2, 4, 6]])
>>> m.shape          #获得矩阵的⾏列数
(2, 3)
>>> m.shape[0]        #获得矩阵的⾏数
2
>>> m.shape[1]        #获得矩阵的列数
3
#索引取值
>>> m[1,:]          #取得第⼀⾏的所有元素
matrix([[2, 4, 6]])
>>> m[1,0:1]          #第⼀⾏第0个元素,注意左闭右开
matrix([[2]])
>>> m[1,0:3]
matrix([[2, 4, 6]])
>>> m[1,0:2]
matrix([[2, 4]])
矩阵求逆、⾏列式
与Numpy array相同,可参考。
矩阵乘法
矩阵乘,与Numpy dnarray类似,可以使⽤np.dot()和np.matmul(),除此之外,由于matrix中重载了“*”,因此“*”也能⽤于矩阵乘。
>>> a = np.mat([[1,2,3], [2,3,4]])
>>> b = np.mat([[1,2], [3,4], [5,6]])
>>> a
matrix([[1, 2, 3],
[2, 3, 4]])
>>> b
matrix([[1, 2],
[3, 4],
[5, 6]])
>>> a * b    #⽅法⼀
matrix([[22, 28],
[31, 40]])
>>> np.matmul(a, b)  #⽅法⼆
matrix([[22, 28],
[31, 40]])
>>> np.dot(a, b)  #⽅法三
matrix([[22, 28],
[31, 40]])
点乘,只剩下multiply⽅法了。
>>> a = np.mat([[1,2], [3,4]])
>>> b = np.mat([[2,2], [3,3]])
>>> np.multiply(a, b)
matrix([[ 2, 4],
[ 9, 12]])
矩阵转置
转置有两种⽅法:
>>> a
matrix([[1, 2],
[3, 4]])
>>> a.T      #⽅法⼀,ndarray也⾏
matrix([[1, 3],
[2, 4]])
>>> np.transpose(a)  #⽅法⼆
matrix([[1, 3],
[2, 4]])
值得⼀提的是,matrix中求逆还有⼀种简便⽅法(ndarray中不⾏):
>>> a
matrix([[1, 2],
[3, 4]])
>>> a.I
matrix([[-2. , 1. ],
[ 1.5, -0.5]])
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。