Numpy是Python中用于處理陣列的一個非常強大的庫,同時也是Pandas等資料處理的庫的核心,如果你有大量處理陣列型別資料的操作,比如操作CSV檔案資料或涉及陣列的科學計算等,那么Numpy是一個非常好的選擇,
注:此筆記中主要是以一維陣列和二維陣列作為示例,更高維的陣列因為用的較少,同時原理和二維陣列也相似,即陣列中再套陣列,所以就不再單獨解釋了,為了簡化表示,文中的np表示Numpy,即import numpy as np,
一、創建陣列(ndarray)
Numpy中的陣列物件型別為ndarray,陣列的創建,最基礎的就是使用np.array()方法創建陣列了,傳入對應的串列或元組即可,創建時也可使用dtype引數指定元素的資料型別,在使用array方法創建陣列時,陣列中的元素必須是同一型別,如果不是,則會發生自動型別轉換,如果不想進行自動轉換,可指定資料型別為object,具體見示例代碼,
其他還有一些用于創建特定型別陣列的方法,常用的有:
- np.arange([start, ]stop, [step, ]dtype=None):相當于Python中range函式,創建一個指定范圍[0, start)或[start, stop)的連續的(具有相同間隔step)的陣列,
- np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0):創建一個指定范圍內具有相同間隔的指定元素個數的陣列,注意,這個方法不用指定間隔,而是根據元素個數自動判斷間隔,
- np.zeros(shape, dtype=float, order='C'):創建一個元素值為0的陣列,
- np.ones(shape, dtype=None, order='C'):創建一個元素值為1的陣列,
- np.empty(shape, dtype=float, order='C'):創建一個元素值未初始化的陣列,
- np.zeros_like(a, dtype=None, order='K', subok=True, shape=None):根據另一個陣列創建一個相同維數和元素個數且元素值為0的陣列,
- np.ones_like(a, dtype=None, order='K', subok=True, shape=None):根據另一個陣列創建一個相同維數和元素個數且元素值為1的陣列,
- np.random.rand(d0, d1, ..., dn):創建一個指定維數(d0, d1, ..., dn),元素為0到1之間的亂數的陣列,d0的值表示這一維的元素個數,
- np.random.randint(low, high=None, size=None, dtype=int):創建一個元素值為[0, low)或[low, high)之間的隨機整數的陣列,可用size指定陣列的shape,
- np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None, axis=0):創建一個指定范圍內(base的start次冪到base的stop次冪)具有相同間隔的指定元素個數的陣列,
示例:

二、陣列索引和切片
Numpy中陣列的索引和切片的使用形如[d0, d1, ...]的方式,其中使用逗號分隔每一維的索引和切片表示,而每一維的索引和切片表示又是與Python中串列的使用是一致的,所以對于一位陣列的索引和切片直接就和Python的串列使用是一樣的了,這里也不再展示示例代碼了,重點在于二維及多位陣列的索引和切片使用,
示例:

三、陣列常用方法
常用屬性:
- ndarray.dtype:陣列元素的資料型別,
- ndarray.shape:陣列的維數和對應元素個數資訊,
- ndarray.size:陣列中的元素個數,
- ndarray.ndim:陣列的維數,
Numpy特色操作

常用方法(大多adarray方法都能在numpy下直接找到并使用):
- ndarray.astype(dtype, order='K', casting='unsafe', subok=True, copy=True):將陣列中元素的資料型別轉換為指定的型別,
- ndarray.fill(value):將陣列中的元素填充為指定的值,
- ndarray.flatten(order='C'):將陣列“拉直”,變為一維陣列,回傳的是一個新的陣列,
- ndarray.ravel([order]):也是將陣列“拉直”,變為一維陣列,但回傳的是原陣列的一個視圖索引,即對這個一維陣列的修改會同步到原陣列,
- ndarray.reshape(shape, order='C'):重新定義陣列的shape,
- ndarray.transpose(*axes):對陣列進行“翻轉”,
- ndarray.T:相當于ndarray.transpose(),
- ndarray.round(decimals=0, out=None):以“四舍五入”的方式對陣列元素進行取整,decimals引數可以指定小數位數,
- ndarray.max(axis=None, out=None, keepdims=False, initial=<no value>, where=True):獲取陣列中的最大值,也可以獲取指定維度的最大值,
- ndarray.min(axis=None, out=None, keepdims=False, initial=<no value>, where=True):獲取陣列中的最小值,也可以獲取指定維度的最小值,
- ndarray.mean(axis=None, dtype=None, out=None, keepdims=False):獲取陣列的平均值,也可以獲取指定維度的平均值,
- ndarray.sum(axis=None, dtype=None, out=None, keepdims=False, initial=0, where=True):獲取陣列的和,也可以獲取指定維度的和,
- ndarray.argmax(axis=None, out=None):最大值的索引,
- ndarray.argmin(axis=None, out=None):最小值的索引,
- ndarray.clip(min=None, max=None, out=None, **kwargs):截斷操作,將陣列中小于min值的元素重置為min值,大于max值的元素重置為max值,
- ndarray.sort(axis=-1, kind=None, order=None):排序,也可以按照指定維度進行排序,
- ndarray.argsort(axis=-1, kind=None, order=None):回傳排序之后的元素索引,
- numpy.vstack(tup):縱向連接陣列,
- numpy.hstack(tup):橫向連接陣列,
- numpy.where(condition[, x, y]):根據條件過濾陣列,
示例:

四、檔案讀寫
文本檔案的讀寫可以使用以下兩個方法:
- numpy.savetxt(fname, X, fmt='%.18e', delimiter=' ', newline='n', header='', footer='', comments='# ', encoding=None):將一個陣列保存到指定的文本檔案中,fname為檔案名稱,X表示陣列,fmt表示資料格式(以%表示的字串格式化),delimiter為分隔符,其他引數也都是見名知意,看著使用就可以了,
- numpy.loadtxt(fname, dtype=<class 'float'>, comments='#', delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0, encoding='bytes', max_rows=None):將文本檔案中的資料加載到陣列當中,
類似于資料的序列化和反序列化,可以將陣列物件保存到檔案中,然后加載出來后直接就是原先的陣列物件:
- numpy.save(file, arr, allow_pickle=True, fix_imports=True):將數物件組保存到指定檔案中,
- numpy.load(file, mmap_mode=None, allow_pickle=False, fix_imports=True, encoding='ASCII'):從檔案中讀取陣列物件,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/88120.html
標籤:Python
下一篇:一篇文章教會你如何制做精美導航條
