NumPy是Python中科學計算的基礎包,它是一個Python庫,提供多維陣列物件,各種派生物件(如掩碼陣列和矩陣),以及用於陣列快速操作的各種API,有包括數學、邏輯、形狀操作、排序、選擇、輸入輸出、離散傅立葉變換、基本線性代數,基本統計運算和隨機模擬等等。
NumPy 最重要的一個特點是其 N 維陣列物件 ndarray,它是一系列同型別資料的集合,以 0 下標為開始進行集合中元素的索引。ndarray 物件是用於存放同型別元素的多維陣列。ndarray 中的每個元素在記憶體中都有相同儲存大小的區域。
C陣列:學過C語言的都知道,在C語言中陣列是一個連續的記憶體空間,並且陣列中的資料的型別也是一致的。
python列表:python中的列表裡面存放的物件,可以是不同的資料型別。其底層實現是通過類似C語言中的指標陣列來實現,即python的列表中存放的資料的指標即他們的地址,然後再根據這個指標找到具體的資料。
Ndarray陣列:和C語言陣列實現類似,也是一段連續的記憶體空間,裡面存放的也是相同的資料型別。
詳細如下:
pip3 install numpy
import numpy
函數作用:初始化一個NumPy陣列
函數原型:numpy.array(object, dtype=None, *, copy=True, order='K', subok=False, ndmin=0)
引數範例:
* object: 必填引數:即建立NumPy陣列的資料物件
* dtype: 可選引數,通過它可以更改陣列的資料型別---可將原來的整型或者其他型別進行強制轉換
* copy: 可選引數,當資料來源是ndarray 時表示陣列能否被複制,預設是True
* order: 可選引數,以哪種記憶體佈局建立陣列,有3個可選值,分別是C(行序列)/F(列序列)/A(預設)
* ndmin: 可選引數,用於指定陣列的維度--例如 一維陣列、二維陣列、三維陣列等
* subok: 可選引數,型別為bool值,預設為False。 為True,使用object的內部資料型別; 為False 使用object陣列的資料型別
程式碼範例:
注意:
* 其中np_array就是Ndarray型別。
* data_list中的資料型別是不一致,但是轉化成np_array後,資料格式一致了,都變成了字串型別。
* 如果傳進來的列表包含不同的型別,則統一轉化為同一型別,轉化的優先順序:str>float>int,即有str則都轉化為str,這樣才能保證NumPy陣列中陣列的一致性。
函數作用:創造出來的陣列裡面填充的都是1
函數原型:numpy.ones(shape, dtype=None, order='C', *, like=None)
引數解釋:
* shape:建立出來陣列的形狀,是一維陣列,還是二維陣列,還是多維陣列等等
* dtype:資料的型別
* order:指定記憶體重以行優先(‘C’)還是列優先(‘F’)順序儲存多維陣列。
程式碼範例:
注意:
shape = (m,n) m行n列, 二維陣列
shape = (m) m個元素的一維陣列 [1,2,3]
shape = (m, ) m個元素的一維陣列
shape = (m, 1) m行1列 二維陣列 [[1],[2],[3]]
shape = (1,m) 1行m列 二維陣列 [[1,2,3]]
函數作用:其用法和ones()一樣,只不過被填充的由1變成了0
函數作用:使用自己指定數位填充陣列內容
函數原型:numpy.full(shape, fill_value, dtype=None, order='C', *, like=None)
程式碼範例:
函數作用: 生成等差數列的陣列
函數原型:linspace(start, stop, num=50,endpoint=True,retstep=False,dtype=None)
引數解釋:
* start,起始點
* stop,結束點
* num,元素個數,預設 50
* endpoint,是否包含 stop 數值,預設為 True,包含 stop 值;若為 False,則不包含 stop 值
* retstep,返回值形式,預設為 False,返回等差數列組,若為True,則返回結果 (array([‘samples’, ‘step’]))
* dtype,返回結果的資料型別,預設無,若無,則參考輸入資料型別
程式碼範例:
函數作用:根據步長生成等差數列
函數原型:arange([start,] stop[, step,], dtype=None, *, like=None)
程式碼範例:
函數作用:使用亂數建立NumPy陣列
函數原型:randint(low, high=None, size=None, dtype=int)
引數範例:
* low:亂數的最小值
* higt:亂數的最大值
* size:生出陣列的形狀
* dtype:資料型別
程式碼範例:
注意:類似的函數還有下面幾個,用法也類似
* numpy.random.random(size): 隨機生成小數的NumPy的陣列
* numpy.random.randn(d0, d1, ..., dn): 標準正態分佈
* np.random.normal(): 普通正態分佈
通過上面的範例,我們看到有幾個屬性是ndarray常用的屬性,這裡我們總結如下:
四個必記的屬性
* ndim: 維度
* shape: 形狀
* size: 總長度
* dtype: 元素型別
程式碼範例: