Python的numpy庫下的幾個小函數的用法


numpy庫是Python進行數據分析和矩陣運算的一個非常重要的庫,可以說numpy讓Python有了matlab的味道

本文主要介紹幾個numpy庫下的小函數。

1、mat函數

mat函數可以將目標數據的類型轉換為矩陣(matrix)

import numpy as np
>>a=[[1,2,3,],
     [3,2,1]]
>>type(a)
>>list


>>myMat=np.mat(a)
>>myMat
>>matrix([[1,2,3],[3,2,1]])

>>type(myMat)
>>numpy.matrixlib.defmatrix.martix

 因此可以使用mat函數將一個列表a轉換成相應的矩陣類型。

2、zeros

zeros函數是生成指定維數的全0數組

>>myMat=np.zeros(3)    ###生成一個一維的全0數組
>>print(myMat)
>>array([0.,0.,0.])


>>myMat1=np.zeros((3,2))  ####生成一個3*2的全0數組
>>print(myMat)
>>array([[0.,0.],
        [0.,0.]
        [0.,0.]])    

3、ones

ones函數是用於生成一個全1的數組

>>onesMat=np.ones(3)   ###1*3的全1數組
>>print(onesMat)
>>array([1.,1.,1.])



>>onesMat1=np.ones((2,3))   ###2*3的全1數組
>>print(onesMat1)
>>array([[1.,1.,1.],[1.,1.,1.]])

4.eye

eye函數用戶生成指定行數的單位矩陣

>>eyeMat=np.eye(4)  
>>print(eyeMat)
>>array([[1.,0.,0.,0.],
        [0.,1.,0.,0.],
        [0.,0.,1.,0.,],
        [0.,0.,0.,1.]])

5、.T

.T作用於矩陣,用作球矩陣的轉置

>>myMat=np.mat([[1,2,3],[4,5,6]])
>>print(myMat)
>>matrix([[1.,2.,3.]
          [4.,5.,6.]])


>>print(myMat.T)
>>matrix([[1,4],
          [2,5],
          [3,6]])                        

 

6、tolist

tolist函數用於把一個矩陣轉化成為list列表

>>x=np.mat([[1,2,3],[4,5,6]])
>>print(x)
>>matrix([[1,2,3],[4,,5,6]])
>>type(x)
>>matrix


>>x.tolist()
>>[[1,2,3],[4,5,6]]

 7.getA()

getA()函數是numpy.matrix下的一個函數,用作把矩陣轉換成數組,等價於np.asarray(self).

>>> x = np.matrix(np.arange(12).reshape((3,4))); x
matrix([[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]])
>>> x.getA()
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

8. .I

.I用作求矩陣的逆矩陣。逆矩陣在計算中是經常需要用到的。例如一個矩陣A,求A的逆矩陣B,即存在矩陣B是的AB=I(I為單位)

In [3]: a=mat([[1,2,3],[4,5,6]])

In [4]: a
Out[4]:
matrix([[1, 2, 3],
        [4, 5, 6]])


In [5]: a.I
Out[5]:
matrix([[-0.94444444,  0.44444444],
        [-0.11111111,  0.11111111],
        [ 0.72222222, -0.22222222]])
In [6]: s=a.I

In [8]: a*s
Out[8]:
matrix([[  1.00000000e+00,   3.33066907e-16],
        [  0.00000000e+00,   1.00000000e+00]])

 

 關於array和matrix的區別,可以參考http://www.cnblogs.com/summerkiki/p/4931226.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM