您的位置 首页 kreess

Python-NumPy 科學計算庫-【基礎應用】

一、介紹NumPy用來存儲和處理大型矩陣NumPy提供瞭一個N維數組類型ndarray,它描述瞭相同類型的“items”的集合ndarray中的所有元素的類型都是相同的Py

一、介紹

  • NumPy用來存儲和處理大型矩陣
  • NumPy提供瞭一個N維數組類型ndarray,它描述瞭相同類型的“items”的集合
    • ndarray中的所有元素的類型都是相同的
    • Python列表中的元素類型是任意的
  • NumPy內置瞭並行運算功能
  • NumPy底層使用C語言,數組中直接存儲對象,而不是存儲對象指針,所以其運算效率遠高於純Python代碼

ndarray的屬性

屬性名字 屬性解釋
ndarray.shape 數組維度的元組,對於矩陣,n 行 m 列
ndarray.ndim 數組維數
ndarray.size 數組中元素數量,相當於 .shape 中 n*m 的值
ndarray.itemsize 一個數組元素的長度(以字節為單位)
ndarray.dtype 數組元素的類型

來一條百度百科先:numpy_百度百科

二、安裝及使用Jupyter&NumPy

Windows啟動終端:

  • win+R -> 輸入cmd,回車 -> 出現命令行

使用終端安裝jupyter和NumPy庫,在命令行中粘貼:

  • pip install jupyter -i https://pypi.tuna.tsinghua.edu.cn/simple
  • pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple

啟動jupyter:

  • 在終端輸入jupyter notebook,回車
  • 瀏覽器會自動打開jupyter,此時終端不要關閉,為瀏覽器提供環境

jupyter擴展插件:

  • pip install jupyter_contrib_nbextensions -i https://pypi.tuna.tsinghua.edu.cn/simple
  • pip install jupyter_nbextensions_configurator -i https://pypi.tuna.tsinghua.edu.cn/simple
  • jupyter contrib nbextension install –user
  • jupyter nbextensions_configurator enable –user

將以上內容分別粘貼到終端中運行,安裝完成後可以在瀏覽器jupyter看到Nbextensions,然後把所需要的插件勾選

查看jupyter快捷鍵:

Help-keyboard Shortcuts

三、基本操作

3.1 數組創建

1)使⽤array函數,將Python下的list轉換為ndarray

2)創建全0數組

3)創建全1數組

4)創建全是指定數字的數組

5)隨機數數組

6)等差數列數組

3.2 查看數組的屬性

首先創建一個數組

shape形狀

dtype數據類型

size尺寸

ndim維度

itemsize元素大小(字節為單位)

3.3 文件讀寫

1)保存數組

首先創建兩個數組

執行完畢後可以看到當前目錄出現瞭這兩個文件:

2)讀取數組

對於.npy文件可以直接加載

對於.npz文件,讀取之後相當於形成瞭一個Key-value類型的變量,不能直接加載,可以通過Key獲取,Key需要加單引號,且沒有保存的Key不能讀取

3)壓縮保存

可以看到壓縮後文件大小與未壓縮的區別

4)讀寫文本文件

儲存到txt

儲存到csv

讀取,分隔符要寫對:

四、數據類型

  • int:int8,int16,int32,int64,unit8
    • int8 表示 2**8=256個數字,-128~127,有符號
    • unit8 也表示256個數字,無符號,表明隻有正數,0~255
  • float:float16,float32,float64
  • str:字符串類型

1)array 創建數組時聲明,指定

對於uint8類型,需要註意數據范圍

2)asarray 轉換時候指定,或者調整

3)astype 數據類型轉換

存儲數據的時候數據類型的設置要合適,小的放不下,大瞭浪費空間,比如

默認的存儲數據類型是float64(存為data1),和我們存儲成float16(存為data2),文件大小結果是差很多的

4)str類型

五、數組運算

1)加減乘除,冪,對數

2)邏輯運算

3)數組與標量運算

4)+=,-=,*=操作(直接改變原數組)

六、復制和視圖

在操作數組時,有時會將其數據復制到新數組中,有時不復制。

6.1 完全沒有復制

直接賦值,賦值前後兩個數組是同一個東西,改變任意一個另一個都會跟著變化

6.2 查看或淺拷貝

使用view,稱為視圖,又叫查看或者淺拷貝。兩個數組不是同一個東西,被查看的數組擁有自己的數據,淺拷貝後的數組是拷貝之前的數組的數據,並不擁有自己的數據,但是無論修改誰,最終結果兩個數組都會發生變化。說明兩個數組雖然不是同一個東西,但是之前仍然有聯系。

6.3 深拷貝

深拷貝就是復制然後創建瞭一個新的數組,復制後兩個數組完全沒有關系,都擁有自己的數據,改變其中一個數組不會影響另外一個。

深拷貝的應用:copy應該在不再需要原來的數據的情況下,切片後調用,如:

七、索引、切片、迭代

7.1 基本索引和切片

數據的基本索引和切片與Python列表類似。

一維數組的索引:

一維數組的切片:

二維數組的索引:

二維默認先取行再取列:

二維數組的切片:

7.2 花式索引

  • 切片返回的數據不是深拷貝,當改變切片的元素時,原數組的元素也會被改變。
  • 花式索引指的是利用整數數組進行索引,跟切片不一樣,它總是將數據復制到新數組中,屬於深拷貝。

7.3 佈爾索引

使用佈爾索引會返回新的數據,原本的數組不會被改變。

應用:

註:cond[:,0] — 行切片冒號前後都省略,表示從頭取到尾,即所有行都取;列索引為0,表示取第一個,即第一門的成績。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

返回顶部