利用Python進行數(shù)據(jù)分析隨筆記 四 (1)


tags:

  • 第四章 NumPy基礎:數(shù)組和矢量計算
  • NumPy的ndarray:一種多維數(shù)組對象

NumPy的ndarray:一種多維數(shù)組對象

創(chuàng)建ndarray

1.使用array函數(shù)。它接受一切序列型的對象(包括其他數(shù)組)锉屈,然后產(chǎn)生一個新的含有摻入數(shù)據(jù)的NumPy數(shù)組。以一個列表的轉換為例:

1.png

2.嵌套序列斑匪,比如一組等長列表組成的列表,將會被轉換成為一個多維數(shù)組:
ndarray.ndim?
數(shù)組維數(shù)奥吩。
ndarray.shape?
Tuple of array dimensions.
2.png

3.除了顯示說明掂之,np.arry會嘗試為新建的這個數(shù)組推斷出一個較為合適的數(shù)據(jù)類型店诗。數(shù)據(jù)類型保存在dtype對象中。


3.png

4.除np.array外盏混,可以新建數(shù)組的函數(shù):
*zeros:創(chuàng)建指定長度或形狀(shape)的全0數(shù)組
*ones:創(chuàng)建指定長度或形狀的全1數(shù)組
*empty:創(chuàng)建一個沒有任何具體值得數(shù)組(應該除了隨機值需求不是很好用)
xxx((a,b,c,d,^,z))字母表示任意數(shù)字,最后一個值(z)是最內(nèi)層元素個數(shù)(長度)蔚鸥,倒數(shù)第n個值表示前一個子單位的個數(shù)

4.png

5.arrange是Python內(nèi)置函數(shù)range的數(shù)組版
5.png

函數(shù) 說明
array 1.將輸入數(shù)據(jù)轉換為ndarray;2.指定dtype或默認推斷出一個合適的dtype;3.默認直接復制輸入數(shù)據(jù)
asarray 1.將輸入數(shù)據(jù)轉換為ndarray许赃;2.如果輸入本身就是ndarray不進行復制
arange 類似于內(nèi)置的range止喷,但返回的是一個ndarray對象而不是列表
ones_like/zeros_like/empty_like 以另一個數(shù)組為參數(shù),并根據(jù)其形狀和dtype創(chuàng)建一個全1/全0/全隨機的數(shù)組
eye/identity 創(chuàng)建正方形對角線為1混聊,其他全0的矩陣弹谁,eye一些屬性可以改變這條對角線
ndarray的數(shù)據(jù)類型

1.通過'ndarray.astype'的方法顯示轉換數(shù)據(jù)類型(detype);
注意*浮點數(shù)轉整數(shù)會失效
從NumPy 1.9開始,astype方法現(xiàn)在返回一個錯誤句喜,如果要轉換為的字符串dtype在“安全”轉換模式下不夠長预愤,以保持正在轉換的整數(shù)/浮點數(shù)組的最大值。以前咳胃,即使結果被截斷植康,也允許進行轉換。
*可以轉換成其他變量的dtype


6.png

調(diào)用astype無論如何都會創(chuàng)建出一個新數(shù)組展懈,即使dtype和老數(shù)據(jù)相同也是销睁。


7.png
數(shù)組和標量之間的運算

NumPy中的數(shù)組可以不用編寫循環(huán)即可以對數(shù)據(jù)執(zhí)行執(zhí)行批量運算。這通常就叫做矢量化存崖。


8.png
基本的索引和切片

*一維數(shù)組和Python列表功能類似冻记。但是。
不同1:當你給一個標量賦值給一個切片是(arr[5:8]=12),該值會自動傳播(廣播)到整個選區(qū)


9.png
9-1.png

python中不允許這樣賦值


9-2.png

不同2:跟列表最重要的區(qū)別在于来惧,數(shù)組切片是原始數(shù)組的視圖冗栗。這意味著數(shù)據(jù)不會被賦值,視圖上的任何修改都會直接反映到源數(shù)組上:
!U曷鳌偶房!完全是不一樣的邏輯趁曼,有一種嫁雞隨雞嫁狗隨狗一輩子相依為命的感覺军浆。


10.png

雖然驚訝,但是這是由于NumPyde 的設計目的是處理大數(shù)據(jù)挡闰,如果NumPy堅持要將數(shù)據(jù)復制來復制去會產(chǎn)生很大的性能和內(nèi)存問題乒融。(arr[5:8].copy可以解決如果不想要這種隨之改變的效果,這里即arr_slice=arr[5:8].copy())

*之后感受一下二維數(shù)組的操作:


11.png

arr2d[0,2] 用法等價于 arr2d[0][2],但是前者更簡單

*多維數(shù)組摄悯,如果省略了后面的索引赞季,則返回對象會是一個維度第一點(低一個維度)的ndarray。返回的低維數(shù)組含有原始高維數(shù)組某條軸上的所有數(shù)據(jù)奢驯。(括號外面的“維度”是一維申钩、二維、三維瘪阁、四維之類的意思撒遣,二括號面的應該理解為“軸”)


12.png
12-1.png
切片索引

ndarray的切片語法和Python列表這樣的以為對象差不多。
高緯度更多花樣管跺,可以在一個或多個軸上進行切片义黎,也可以跟幀數(shù)索引混合使用。


13.png

** 布爾型索引**


14.png

這里可以看出目前版本負號的用法已經(jīng)不可以了豁跑,另外這里&廉涕、|之類的布爾運算都有效,但是Python關鍵字and和or是在布爾類型數(shù)組中是無效的艇拍。


15.png
16.png

花式索引
花式索引是一個NumPy術語狐蜕,它指的是利用整數(shù)數(shù)組進行索引。

18.png

numpy.reshape(a, newshape, order='C')[source]?
Gives a new shape to an array without changing its data.

arr=np.arange(32).reshape((8,4))

arr
Out[2]: 
array([[ 0,  1,  2,  3],#0
       [ 4,  5,  6,  7],#1
       [ 8,  9, 10, 11],#2
       [12, 13, 14, 15],#3
       [16, 17, 18, 19],#4
       [20, 21, 22, 23],#5
       [24, 25, 26, 27],#6
       [28, 29, 30, 31]])#7

arr[[1,5,7,2],[0,3,1,2]]
Out[6]: array([ 4, 23, 29, 10])#即最終選出了(1,0)卸夕、(5,3)馏鹤、(7,1)、(2,2)

想要得到矩陣的子集也是一個矩形區(qū)域娇哆,可以:


19.png

**花式索引和切片不同湃累,它總是將數(shù)據(jù)復制到新數(shù)組中

數(shù)組專職和軸對換

array.T:轉置(軸對換)
np.dot(a,b):array 'a'、'b'的矩陣內(nèi)積
ndarray.transpose*軸?

返回軸轉置的數(shù)組視圖碍讨。

對于1-D陣列治力,這沒有任何影響。(要在列向量和行向量之間切換勃黍,首先將1-D數(shù)組轉換為矩陣對象宵统。)對于2-D數(shù)組,這是通常的矩陣轉置。對于nD陣列马澈,如果給出軸瓢省,則它們的順序表示軸的置換方式(參見示例)。如果沒有提供軸 痊班,那么勤婚。
a.shape = (i[0], i[1], ... i[n-2], i[n-1]) a.transpose().shape = (i[n-1], i[n-2], ... i[1], i[0])
| 參數(shù): |
axis:無,int的元組或n int

  • 無參數(shù)或無參數(shù):反轉軸的順序涤伐。
  • 整數(shù)的元組:?在元組第地方意味著一個個軸變?yōu)?em>a.transpose()的?個軸馒胆。
  • n int:與相同整數(shù)的n元組相同(此形式僅作為元組形式的“便利”替代)
    所以arr.transpose((1,0,2))等于只是0,1軸置換
In [59]: arr1 = np.arange(12).reshape(2,2,3)

In [60]: arr1
Out[60]:
array([[[ 0,  1,  2],
        [ 3,  4,  5]],

       [[ 6,  7,  8],
        [ 9, 10, 11]]])

In [61]: arr1.shape #看形狀
Out[61]: (2, 2, 3) #說明這是一個2*2*3的數(shù)組(矩陣),返回的是一個元組凝果,可以對元組進行索引祝迂,也就是0,1,2
In [62]: arr1.transpose((1,0,2))
Out[62]:
array([[[ 0,  1,  2],
        [ 6,  7,  8]],

       [[ 3,  4,  5],
        [ 9, 10, 11]]])

ndarray.swapaxes(axis1, axis2)?
Return a view of the array with axis1 and axis2 interchanged.

20.png

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市器净,隨后出現(xiàn)的幾起案子型雳,更是在濱河造成了極大的恐慌,老刑警劉巖山害,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件纠俭,死亡現(xiàn)場離奇詭異,居然都是意外死亡粗恢,警方通過查閱死者的電腦和手機柑晒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來眷射,“玉大人匙赞,你說我怎么就攤上這事⊙铮” “怎么了涌庭?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長欧宜。 經(jīng)常有香客問我坐榆,道長,這世上最難降的妖魔是什么冗茸? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任席镀,我火速辦了婚禮,結果婚禮上夏漱,老公的妹妹穿的比我還像新娘豪诲。我一直安慰自己,他們只是感情好挂绰,可當我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布屎篱。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪交播。 梳的紋絲不亂的頭發(fā)上重虑,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天,我揣著相機與錄音秦士,去河邊找鬼缺厉。 笑死,一個胖子當著我的面吹牛伍宦,可吹牛的內(nèi)容都是我干的芽死。 我是一名探鬼主播乏梁,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼次洼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了遇骑?” 一聲冷哼從身側響起卖毁,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎落萎,沒想到半個月后亥啦,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡练链,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年翔脱,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片媒鼓。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡届吁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出绿鸣,到底是詐尸還是另有隱情疚沐,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布潮模,位于F島的核電站亮蛔,受9級特大地震影響,放射性物質發(fā)生泄漏擎厢。R本人自食惡果不足惜究流,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望动遭。 院中可真熱鬧芬探,春花似錦、人聲如沸沽损。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至炎疆,卻和暖如春卡骂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背形入。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工全跨, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人亿遂。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓浓若,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蛇数。 傳聞我的和親對象是個殘疾皇子挪钓,可洞房花燭夜當晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容