一、介紹
- 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,表示取第一個,即第一門的成績。