python日記Day12——numpy速查中文手冊

python日記——numpy速查中文手冊

python數據分析與展示主要涉及Numpy、matplotlib、pandas三個庫,本文將從Numpy開始,逐步介紹python進行數據分析與展示的相關知識,從而掌握表示、清洗、統計和展示數據的能力。
一、Numpy簡介

  • Numpy是表達N維數組的最基礎庫,python接口使用,底層通過c語言實現,計算速度優異,它是python數據分析及科學計算的基礎庫,支撐pandas庫,同時還提供直接的矩陣運算、廣播函數、線性代數等功能。

二、ndarray數組對象

  • ndarray的優勢
    1、數組對象可以去掉元素間運算所需的循環,使一維向量更像單個數據;
    2、設置專門的數組對象,經過優化,可以提升這類應用的運算速度;
    3、數組對象採用相同的數據類型,有利於節省運算和存儲空間

  • ndarray基本介紹
    1、ndarray是一個多維數組對象,由實際的數據、描述這些數據的元數據(數據維度、數據類型等)兩部分構成;
    2、ndarray數組一般要求所有元素類型相同(同質),數組下標從0開始
    3、numpy.array()用於生成一個ndarray數組,其輸出爲[ ]形式,輸出的數組元素之間由空格分隔;
    4、軸和秩:軸用於保存數據的維度,秩用於表示軸的數量;
    5、ndarray對象的屬性
    .ndim:秩,即軸的數量或維度的數量;
    .shape:ndarray對象的尺度,對於矩陣,表示n行m列;
    .size:ndarray對象元素的個數,相當於.shape中n*m的值;
    .dtype:ndarray對象的元素類型;
    .itemsize:ndarray對象中每個元素的大小,以字節爲單位。
    6、ndarray的元素類型
    ndarray元素類型很多,主要是因爲科學計算涉及數據較多,對存儲和性能都有較高要求,並且對元素類型精確定義,有助於Numpy合理使用存儲空間並優化性能,有助於程序員對程序規模有合理評估,其元素類型如下:bool、inte、intp、int8、int16、int32、int64、uint8、uint16、uint32、uint64、float16、float32、float64、complex64、complex128;
    7、ndarray數組可以由非同質對象構成,但無法有效發揮Numpy優勢,應該儘量避免使用,如果不是同一類型,數組元素會自動地向下進行轉換:
    在這裏插入圖片描述

  • ndarray數組的創建和變換
    1、ndarray數組的創建方法:
    (1) 從python中的列表、元組等類型創建:x = np.array(list/tuple)
    (2) 使用Numpy中函數創建ndarray數組:
    numpy.arange(n):類似range函數,返回ndarray類型,元素從0到n-1;
    numpy.ones(shape):根據shape生成一個全1數組,shape是元組類型;
    numpy.zeros(shape):根據shape生成一個全0數組。shape是元組類型
    numpy.full(shape,val):根據shape生成一個數組,每個元素值都是val;
    numpy.eye(n):創建一個正方的n*n單位矩陣,對角線爲1,其餘爲0;
    numpy.ones_like(a):根據數組a的形狀生成一個全1數組;
    numpy.zeros_like(a):根據數組a的形狀生成一個全0數組;
    numpy.full_like(a,val):根據數組a的形狀生成一個全val數組;
    numpy.linspace(a,b,size,endpoint=True/False):根據起止數據a,b等間距地填充size個數據,形成數組,endpoint=False時表示不包含b;
    numpy.concatenate():將兩個或多個數組合併成一個新的數組。
    (3)創建ndarray時,可以指定其類型:
    在這裏插入圖片描述
    (4) ndarray可通過“=”進行直接複製(相當於兩個指針指向同一位置),也可以.copy()進行復制(生成一個副本)。
    2、ndarray數組的變換:
    (1) 維度變換:
    .reshape(shape):不改變數組元素,返回一個shape形狀的數組,原數組不變;
    .resize(shape):與.reshape()功能一致,但修改原數組;
    .swapaxes(ax1,ax2):將數組n個維度中兩個維度進行調換;
    .flatten():對數組進行降維,返回摺疊後的一維數組,原數組不變。
    (2) 元素類型變換 :
    .astype(new_type):不會改變原始數組結構,創建一個新的數組(原始數據的一個拷貝)。
    np.asarray():不會改變原始數組結構:
    在這裏插入圖片描述
    (3)ndarray數組向列表轉換: .tolist()

  • ndarray數組的操作
    1、數組的索引和切片:
    (1)一維數組:與python中列表相似;
    (2)多維數組:
    索引:a[1,2,3]、a[-1,-2,-3];
    切片:a[:,1:3,::2],三維爲例,2表示步長。
    在這裏插入圖片描述
    2、ndarray數組的運算:
    (1) 數組與標量之間的運算:作用於數組的每一個元素;
    (2) numpy一元函數,對ndarray中的數據執行元素級運算的函數:
    numpy.abs(x),numpy.fabs(x):計算數組各元素的絕對值;
    numpy.sqrt(x):計算數組各元素的平方根;
    numpy.square(x):計算數組各元素的平方;
    numpy.log(x),numpy.log10(x),numpy.log2(x):計算各元素的對數;
    numpy.ceil(x),numpy.floor(x):計算數組各元素的ceiling值或floor值;
    numpy.rint(x):計算數組各元素的四捨五入值;
    numpy.modf(x):將數組各元素的小數和整數部分以兩個獨立數組形式返回;
    numpy.cos(x)等:計算三角函數值;
    numpy.exp(x):計算數組各元素的指數值;
    numpy.sign(x):計算數組各元素的符號值,1(+),0,-1(-)。
    (3) numpy二元函數:
    numpy.maxmun(x,y)、numpy.minmun(x,y)、numpy.fmax()、numpy.fmin()、numpy.mod(x,y)、numpy.copysign(x,y)—將數組y中各元素值的符號賦值給數組x對應元素、numpy.multiply(),numpy.dot()——矩陣乘法(維度一致)、加減乘除、算術比較。
    (4) 數值運算,可指定軸(axis):
    .sum(),.prod()(累乘),.min(),.max(),
    .mean(),.std(),.var(),
    .round(decimals=1精度)(四捨五入),
    .argmin()(最小值的索引),.argmax()
    在這裏插入圖片描述
    在這裏插入圖片描述
    (5)np.where()
    在這裏插入圖片描述

  • numpy常用功能模塊
    1、random模塊操作
    (1) numpy.random.uniform(low=0.0, high=1.0, size=None):
    生成size個符合均分佈的浮點數,取值範圍爲[low, high),默認取值範圍爲[0, 1.0)
    (2) numpy.random.rand(d0, d1, …, dn):
    生成一個(d0, d1, …, dn)維的數組,數組的元素取自[0, 1)上的均分佈,若沒有參數輸入,則生成一個數
    (3) numpy.random.randint(low, high=None, size=None, dtype=‘I’):
    生成size個整數,取值區間爲[low, high),若沒有輸入參數high則取值區間爲[0, low)
    (4) numpy.random.random_integers(low, high=None, size=None):
    生成size個整數,取值區間爲[low, high], 若沒有輸入參數high則取值區間爲[1, low]
    (5) numpy.random.random(size=None):
    產生[0.0, 1.0)之間的浮點數
    (6)numpy.random.normal(mua,sigma,size):
    生成size個均值爲mua,標準差爲sigma的高斯分佈的概率密度隨機數
    (7)numpy.random.shuffle():
    對numpy的數組進行重新隨機排序,如果是多維數組,按照第一維進行隨機排序
    (8)numpy.random.seed():
    指定隨機數種子,隨機策略相同,無論執行多少次隨即操作,結果都相同
    2、排序操作
    (1)np.sort():
    在這裏插入圖片描述
    (2)np.argsort():用元素的索引位置替代排序後的實際結果
    在這裏插入圖片描述在這裏插入圖片描述
    (3)np.searchsorted():查找一個合適的位置,將元素插入已排好序的一維數組中,並且保持數組元素的順序不被打亂
    在這裏插入圖片描述

本文部分內容參考於北京理工大學嵩天老師相關課程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章