日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

numpy安装_Python进阶之NumPy快速入门(一)

發布時間:2023/12/15 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 numpy安装_Python进阶之NumPy快速入门(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

NumPy是Python的一個擴展庫,負責數組和矩陣運行。相較于傳統Python,NumPy運行效率高,速度快,是利用Python處理數據必不可少的工具

這個NumPy快速入門系列分為四篇,包含了NumPy大部分基礎知識,每篇閱讀時間不長,但內容含量高。大家最好親自碼一遍代碼,這樣可以更有收獲。

概要

  • 輕松認識和安裝NumPy,對NumPy建立一個良好印象。
  • 掌握NumPy的各種屬性,讓使用數組變得得心應手。
  • 學會三種創建數組方法,讓創建數組變得輕而易舉。
  • 第一節.NumPy安裝和介紹

    NumPy安裝

    我們提供兩種命令安裝方法,都非常簡便:

    • pip命令安裝
    • conda命令安裝

    這兩種安裝方法適用于Windows, Linux,以及Mac系統。

    (1)pip命令:pip install numpy

    當終端顯示成功安裝或者已經安裝說明numpy已經安裝完畢。

    (2)conda命令: conda install numpy

    conda命令是通過Anaconda軟件來安裝NumPy。安裝好Anaconda軟件后,打開Anaconda Prompt后在里面輸入conda install numpy命令即可。

    安裝完成后,為了檢驗NumPy是否可以使用,我們用一個簡單的例子做個實驗:

    代碼:

    import?numpy?as?npprint?(np.eye(4))

    講解:

    為了方便,大家一般采用import numpy as np這種調用方法,將numpy縮寫成np來使用。我們使用NumPy中的eye()函數來檢查NumPy是否已經安裝完成,eye(N)是一個產生N*N的單位矩陣

    運行結果:

    [[1. 0. 0. 0.]

    [0. 1. 0. 0.]

    [0. 0. 1. 0.]

    [0. 0. 0. 1.]]

    如果大家的屏幕里面也出現了這個結果,那么恭喜你NumPy庫已經成功安裝,可以開始正式學習了。

    NumPy和列表

    我們首先要搞清楚的是,NumPy處理的對象是什么。事實上,我們把NumPy處理的對象叫ndarray,這是一個縮寫,翻譯過來叫做多維數組。ndarray類型的數據和我們之前學過的列表頗有淵源:

    代碼:

    import numpy as nplist?=?[1,?2,?3]arr?=?np.array(list)print?(type(list))print?(type(arr))

    講解:

    我們首先建立一個列表,然后通過np.array函數將這個列表轉換成一個NumPy數組,通過打印這兩個變量的type信息,我們可以發現二者的區別和聯系。

    運行結果:

    沒錯,arr變量的數據類型是ndarray。當然,我們并不是總是通過轉換列表變成ndarray。我們想強調的是,雖然NumPy數組雖然和列表很類似,但是二者卻是完全不同的數據類型,因此二者使用方法也有很大不同。

    Numpy比Python列表更具優勢,其中一個優勢便是速度。在對大型數組執行操作時,Numpy的速度比Python列表的速度快了好幾百。因為Numpy數組本身能節省內存,并且Numpy在執行算術、統計和線性代數運算時采用了優化算法

    常見數組

    我們最后給大家介紹常見的幾種ndarray數組:

    代碼:

    a?=?np.array([1,?2,?3])b?=?np.array([[1,?2],?[3,?4]])c?=?np.array([1,?2,?3],?dtype?=?complex)print?(a)print?(b)print?(c)

    講解:

    a是一個一維數組;b是一個二維數組;c是復數變量的一維數組。這些都是常見的ndarray,以后我們將會用NumPy提供的函數對這些常見的數組進行處理,來完成我們想要的目標。

    運行結果:

    [1 2 3]

    [[1 2]

    [3 4]]

    [1.+0.j 2.+0.j 3.+0.j]

    第二節.NumPy數組屬性

    我們將幾種常見數組屬性分成以下幾種:

    • 數據類型 dtype
    • 元素個數 size
    • 維度 ndim
    • 形狀 shape
    • 實部和虛部 real image

    NumPy支持很多不同的數據類型,從整數型(int)到浮點型(float),再到復數型,應有盡有。如何判斷數組的數據類型是一件比較重要的事情,NumPy給我們提供了dtype命令來查看數據類型:

    代碼:

    import?numpy?as?npa?=?np.array([1,?2,?3])b?=?np.array([[1.1,?2],?[3.1,?4.2]])c?=?np.array([1,?2,?3],?dtype?=?complex)print?(a.dtype,?b.dtype,?c.dtype)

    講解:

    我們分別建立了三個NumPy數組,a是整數型;b是浮點型;c是復數型。dtype既可以在創建數組的時候申明變量類型,也可以通過打印告訴我們數組的數據類型。

    運行結果:

    int32 float64 complex128

    在我們知道了NumPy數據類型后,我們還需要知道它的更多屬性來全面了解這個數組。

    代碼:

    b?=?np.array([[1.1,?2],?[3.1,?4.2]])c?=?np.array([1,?2,?3],?dtype?=?complex)print?(b.ndim,?b.shape,?b.size)print?(c.real,?c.imag)

    講解:

    我們分別查看了b數組的維度,形狀,以及元素個數。我們知道b是一個2*2的浮點型數組,因為它的維度是2,形狀就是行數乘以列數(2,2);元素個數是4。對于c這個復數數組,我們調用了實部(real)和虛部(imag)這個兩個屬性。

    運行結果:

    2 (2, 2) 4

    [1. 2. 3.] [0. 0. 0.]

    第三節.創建數組

    對于NumPy數組,一般而言我們有三種創建方法:

  • 用np.array直接填入已知數據,比如我們在第一小節介紹常見數組的時候用的方法。
  • 用特殊函數創建符合一定規律的數組。比如numpy.zeros:創建元素全是0的數組。
  • 用asarray將其他類型數據轉換成NumPy數組。
  • 我們先介紹第二種方法中常見的幾種函數:

    • numpy.zeros 創建元素全是0的數組
    • numpy.ones 創建元素全是1的數組
    • numpy.arrange 創建數值范圍
    • numpy.linspace 創建數值范圍

    np.zeros() & np.ones()

    代碼:

    e?=?np.array([1,?2,?3],?dtype=float)f?=?np.zeros((3,2),dtype=int)g?=?np.ones((1,3))print?(e)print?(f)print?(g)

    講解:

    我們用第一種方法,創建了數據類型為浮點型(float)的數組e;然后通過第二種方法,分別創建了元素都是0和1的兩個數組。注意到我們可以通過dtype,以及shape等來控制數組屬性。在上面的例子中f和g,我們把shape省略了,只用(3,2)這種形式。

    運行結果:

    [1. 2. 3.]

    [[0 0]

    [0 0]

    [0 0]]

    [[1. 1. 1.]]

    np.arrange()

    很多情況下我們非常想要得到從一個整數到另一個整數的一個數組,比如周一到周日,一天中從1點到24點等,還有從-10度到40度的溫度范圍。這時候用NumPy中的arange函數就可以幫助你達成這個目標。

    arange函數有四個輸入參數來調整:

    • start 起始值
    • stop 終止值
    • step 步長(默認是1)
    • dtype 數據類型。

    值得注意的是,這里的終止值是取不到的,所以真正意義上而言終止值是stop-1。

    代碼:

    import?numpy?as?npa?=?np.arange(5)b?=?np.arange(1,5)c?=?np.arange(1,10,2)d?=?np.arange(2,6,dtype=float)print?(a,?b,?c,?d)

    講解:

    我們一共建立了四個數組,第一個我們只有一個參數,是終止值參數,這時候其他參數都是默認的。第二個數組,我們給定了起始值和終止值。第三個數組我們增加了步長。第四個數組,我們隱藏的其實是步長,也就是取默認值1。大家在看答案之前可以猜一下a,b,c,d分別是多少。

    運行結果:

    [0 1 2 3 4] [1 2 3 4] [1 3 5 7 9] [2. 3. 4. 5.]

    np.linspace()

    linspace是linear space的縮寫,線性空間。和arange稍有不同的是,linspace沒有步長,相反它有個叫做num的參數來控制生成數列的總數目。也就是說,在給定起始值和終止值的時候,步長被總數目決定了。

    代碼:

    a?=?np.linspace(1,10,10)b?=?np.linspace(10,20,5,?endpoint?=?False)c?=?np.linspace(10,20,5,?endpoint?=?False,?retstep?=?True)print?(a)print?(b)print?(c)

    講解:

    我們分別利用linspace建立了三個數組,第一個endpoint不賦值,默認是True,默認終止值是包含在內的;第二個我們不把終止值包括在內;最后我們用retstep=True顯示數列的間距。

    運行結果:

    [ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]

    [10. 12. 14. 16. 18.]

    (array([10., 12., 14., 16., 18.]), 2.0)

    第三種創建方法:asarray() & array()

    asarray函數可以將其他數據類型轉換成Numpy數組。

    代碼:

    a?=?[1,?2,?3]b?=?(1,?2,?3)a_1?=?np.array(a)a_2?=?np.asarray(a)b_1?=?np.array(b)b_2?=?np.asarray(b)print?(a_1,?a_2,type(a_1))print?(b_1,?b_2)

    講解:

    我們建立了一個列表a和一個元組b,分別用np.array和np.asarray來轉換。其實在將列表和元組轉換成numpy數組的時候效果是一樣的。也就是說不論是從列表a出發得到的a_1和a_2還是從元組b出發得到的b_1和b_2都是numpy數組[1,2,3]。

    但是,他們二者還是有區別的,當數據源是ndarray,即numpy數組的時候,array會復制出一個副本,占用新的內存,但是asarray并不會。從這里看來,對一般的程序任務,我們并不太需要區分array和asarray,除非做大型數據的時候

    運行結果:

    [1 2 3] [1 2 3]

    [1 2 3] [1 2 3]

    總結回顧

  • 兩種方法安裝NumPy,NumPy和列表的區別和聯系。
  • NumPy數組的幾種屬性,包括數據類型,維度,大小等。
  • 三種創建數組的方法,直接創建,特殊函數,數組轉換。
  • 總結

    以上是生活随笔為你收集整理的numpy安装_Python进阶之NumPy快速入门(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。