午夜国产狂喷潮在线观看|国产AⅤ精品一区二区久久|中文字幕AV中文字幕|国产看片高清在线

    Python中的Numpy入門教程
    來源:易賢網(wǎng) 閱讀:13373 次 日期:2014-05-19 20:15:34
    溫馨提示:易賢網(wǎng)小編為您整理了“Python中的Numpy入門教程”,方便廣大網(wǎng)友查閱!

    這篇文章主要介紹了Python中的Numpy入門教程,著重講解了矩陣中的數(shù)組操作,需要的朋友可以參考下

    1、Numpy是什么

    很簡單,Numpy是Python的一個科學計算的庫,提供了矩陣運算的功能,其一般與Scipy、matplotlib一起使用。其實,list已經(jīng)提供了類似于矩陣的表示形式,不過numpy為我們提供了更多的函數(shù)。如果接觸過matlab、scilab,那么numpy很好入手。在以下的代碼示例中,總是先導入了numpy:

    代碼如下:

    >>>importnumpyasnp

    >>>printnp.version.version

    1.6.2

    2、多維數(shù)組

    多維數(shù)組的類型是:numpy.ndarray。

    使用numpy.array方法

    以list或tuple變量為參數(shù)產生一維數(shù)組:

    代碼如下:>>>printnp.array([1,2,3,4])

    [1234]

    >>>printnp.array((1.2,2,3,4))

    [1.22.3.4.]

    >>>printtype(np.array((1.2,2,3,4)))

    <type'numpy.ndarray'>

    以list或tuple變量為元素產生二維數(shù)組:

    代碼如下:

    >>>printnp.array([[1,2],[3,4]])

    [[12]

    [34]]

    生成數(shù)組的時候,可以指定數(shù)據(jù)類型,例如numpy.int32,numpy.int16,andnumpy.float64等:

    代碼如下:

    >>>printnp.array((1.2,2,3,4),dtype=np.int32)

    [1234]

    使用numpy.arange方法

    代碼如下:

    >>>printnp.arange(15)

    [01234567891011121314]

    >>>printtype(np.arange(15))

    <type'numpy.ndarray'>

    >>>printnp.arange(15).reshape(3,5)

    [[01234]

    [56789]

    [1011121314]]

    >>>printtype(np.arange(15).reshape(3,5))

    <type'numpy.ndarray'>

    使用numpy.linspace方法

    例如,在從1到3中產生9個數(shù):

    代碼如下:

    >>>printnp.linspace(1,3,9)

    [1.1.251.51.752.2.252.52.753.]

    使用numpy.zeros,numpy.ones,numpy.eye等方法可以構造特定的矩陣

    例如:

    代碼如下:

    >>>printnp.zeros((3,4))

    [[0.0.0.0.]

    [0.0.0.0.]

    [0.0.0.0.]]

    >>>printnp.ones((3,4))

    [[1.1.1.1.]

    [1.1.1.1.]

    [1.1.1.1.]]

    >>>printnp.eye(3)

    [[1.0.0.]

    [0.1.0.]

    [0.0.1.]]

    創(chuàng)建一個三維數(shù)組:

    代碼如下:

    >>>printnp.zeros((2,2,2))

    [[[0.0.]

    [0.0.]]

    [[0.0.]

    [0.0.]]]

    獲取數(shù)組的屬性:

    代碼如下:

    >>>a=np.zeros((2,2,2))

    >>>printa.ndim#數(shù)組的維數(shù)

    3

    >>>printa.shape#數(shù)組每一維的大小

    (2,2,2)

    >>>printa.size#數(shù)組的元素數(shù)

    8

    >>>printa.dtype#元素類型

    float64

    >>>printa.itemsize#每個元素所占的字節(jié)數(shù)

    8

    數(shù)組索引,切片,賦值

    示例:

    代碼如下:

    >>>a=np.array([[2,3,4],[5,6,7]])

    >>>printa

    [[234]

    [567]]

    >>>printa[1,2]

    7

    >>>printa[1,:]

    [567]

    >>>printa[1,1:2]

    [6]

    >>>a[1,:]=[8,9,10]

    >>>printa

    [[234]

    [8910]]

    使用for操作元素

    代碼如下:

    >>>forxinnp.linspace(1,3,3):

    ...printx

    ...

    1.0

    2.0

    3.0

    基本的數(shù)組運算

    先構造數(shù)組a、b:

    代碼如下:

    >>>a=np.ones((2,2))

    >>>b=np.eye(2)

    >>>printa

    [[1.1.]

    [1.1.]]

    >>>printb

    [[1.0.]

    [0.1.]]

    數(shù)組的加減乘除:

    代碼如下:

    >>>printa>2

    [[FalseFalse]

    [FalseFalse]]

    >>>printa+b

    [[2.1.]

    [1.2.]]

    >>>printa-b

    [[0.1.]

    [1.0.]]

    >>>printb*2

    [[2.0.]

    [0.2.]]

    >>>print(a*2)*(b*2)

    [[4.0.]

    [0.4.]]

    >>>printb/(a*2)

    [[0.50.]

    [0.0.5]]

    >>>print(a*2)**4

    [[16.16.]

    [16.16.]]

    使用數(shù)組對象自帶的方法:

    代碼如下:

    >>>a.sum()

    4.0

    >>>a.sum(axis=0)#計算每一列(二維數(shù)組中類似于矩陣的列)的和

    array([2.,2.])

    >>>a.min()

    1.0

    >>>a.max()

    1.0

    使用numpy下的方法:

    代碼如下:

    >>>np.sin(a)

    array([[0.84147098,0.84147098],

    [0.84147098,0.84147098]])

    >>>np.max(a)

    1.0

    >>>np.floor(a)

    array([[1.,1.],

    [1.,1.]])

    >>>np.exp(a)

    array([[2.71828183,2.71828183],

    [2.71828183,2.71828183]])

    >>>np.dot(a,a)##矩陣乘法

    array([[2.,2.],

    [2.,2.]])

    合并數(shù)組

    使用numpy下的vstack和hstack函數(shù):

    代碼如下:

    >>>a=np.ones((2,2))

    >>>b=np.eye(2)

    >>>printnp.vstack((a,b))

    [[1.1.]

    [1.1.]

    [1.0.]

    [0.1.]]

    >>>printnp.hstack((a,b))

    [[1.1.1.0.]

    [1.1.0.1.]]

    看一下這兩個函數(shù)有沒有涉及到淺拷貝這種問題:

    代碼如下:

    >>>c=np.hstack((a,b))

    >>>printc

    [[1.1.1.0.]

    [1.1.0.1.]]

    >>>a[1,1]=5

    >>>b[1,1]=5

    >>>printc

    [[1.1.1.0.]

    [1.1.0.1.]]

    可以看到,a、b中元素的改變并未影響c。

    深拷貝數(shù)組

    數(shù)組對象自帶了淺拷貝和深拷貝的方法,但是一般用深拷貝多一些:

    代碼如下:>>>a=np.ones((2,2))

    >>>b=a

    >>>bisa

    True

    >>>c=a.copy()#深拷貝

    >>>cisa

    False

    基本的矩陣運算

    轉置:

    代碼如下:

    >>>a=np.array([[1,0],[2,3]])

    >>>printa

    [[10]

    [23]]

    >>>printa.transpose()

    [[12]

    [03]]

    跡:

    代碼如下:>>>printnp.trace(a)

    4

    numpy.linalg模塊中有很多關于矩陣運算的方法:

    代碼如下:

    >>>importnumpy.linalgasnplg

    特征值、特征向量:

    代碼如下:

    >>>printnplg.eig(a)

    (array([3.,1.]),array([[0.,0.70710678],

    [1.,-0.70710678]]))3、矩陣

    numpy也可以構造矩陣對象,這里不做討論。

    更多信息請查看IT技術專欄

    更多信息請查看腳本欄目
    易賢網(wǎng)手機網(wǎng)站地址:Python中的Numpy入門教程

    2025國考·省考課程試聽報名

    • 報班類型
    • 姓名
    • 手機號
    • 驗證碼
    關于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網(wǎng)