Numpy的數(shù)據(jù)核心

Numpy提供了高效存儲和操作密集數(shù)據(jù)緩存的接口。
先不管那些數(shù)據(jù)是如何處理的,我們只需要明白,數(shù)據(jù)是如何存儲的,就夠了。而知道數(shù)據(jù)如何存儲,那么其相應(yīng)的操作也變得非常明了。
PS:除要點外,都是解釋說明要點的,理解要點是核心,知道要點,在不看任何東西的前提條件下,能說出這個要點所包含的意義

核心:理解Python語言中,數(shù)據(jù)是如何被存儲和操作的。

第一點、
Python中的所有變量都是對象。

一個特性:Python中,“任何變量”可以賦“任何值”。
這是因為Python中的每一個數(shù)據(jù)都包含了除本數(shù)據(jù)以外的頭。定義如下

struct _longobject{
    long ob_refcnt;//引用計數(shù),Python默默處理內(nèi)存的分配和回收
    PyTypeObject *ob_type;//將變量的類型編碼
    size_t ob_size;//指定接下來的數(shù)據(jù)成員的大小
    long ob_digit[1];//包含我們希望Python變量表示的實際整型值
};

第二點、
Python中的列表,基于第一點,也是靈活的。

這造成了巨大的空間浪費,所以為了像C語言一樣,快速操作,Numpy提供相應(yīng)的庫。

第三點、
Python為解決這個問題,采用了array

array是一個包
array.array(列表或數(shù)據(jù))
如:array.array(a,[b,c,d,e]) a為類型數(shù)據(jù)碼
array形式:類型數(shù)據(jù)碼 + 列表(同一數(shù)據(jù))

第四點、
Numpy提供了類似于array的方法,更為簡潔,好用。

與array使用方法基本一致,但是可以使用許多方法。

第五點
Numpy中array提供的矩陣是array中列表中的列表。

即array()形式,內(nèi)部[]表示矩陣單個[]表示一行,即有三層形式。
array([
[1,2,3]
[1,2,3]
])

方法

剛才講述了原理,一定要搞清楚再思考方法的問題。因為方法是為原理服務(wù)的。

方法 效果
np.ones((row, column), dtype=?) 獲得1的row*column矩陣
np.zeros((row, column)) 獲得0的row*column矩陣
np.full((row, column), 數(shù)) 獲得'數(shù)'的row*column矩陣
np.linspace(0,1,5) 數(shù)組,0-1,五個數(shù)均勻分配(含0含1)
np.random.random((row, column)) 獲得"random"的row*column矩陣
np.random.normal(0,1,(row, column)) 獲得"u 與 標(biāo)準(zhǔn)差"的row*column矩陣
np.random, randint(0,10,(3,4)) 獲得[0,10)區(qū)間隨機整型row*column數(shù)組
np.eye(3) 獲得單位矩陣(n*n)
np.empty(3) 獲得未初始化矩陣n*n
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容