日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

numpy 若干行和列_Numpy的轴,pandas的行和列

發(fā)布時間:2024/10/8 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 numpy 若干行和列_Numpy的轴,pandas的行和列 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

使用幕布做了一系列詳細(xì)筆記請點擊:

高維ndarray的軸軸編號和索引傻傻分不清楚

很多函數(shù)需要傳入軸編號,非常容易和索引弄混,以3維數(shù)組為例,軸有3條,編號分別為 0,1,2

我們制造一個3×3×3的3維數(shù)組:

arr3d=np.array([[[1,2,3],[4,5,6],[7,8,9]],[[10,11,12],[13,14,15],[16,17,18]],[[19,20,21],[22,23,24],[25,26,27]]])

arr3d.shape

輸出

(3, 3, 3)

arr3d數(shù)組的shape元組為(3,3,3),元組的索引為 [ 0,1,2 ]

可以看到軸編號和shape元組的索引是對等的,所以這個編號可以理解為高維ndarray.shape產(chǎn)生的元組的索引軸是什么鬼

數(shù)組就是按照下面的順序儲存的:

[ [[1,2,3] , [4,5,6] , [7,8,9] ], [[10,11,12] , [13,14,15] , [16,17,18] ] , [[19,20,21] , [22,23,24] , [25,26,27] ] ]

最內(nèi)層一對 [ ] 可以代表一個1維數(shù)組,加粗的一對 [ ]里面有3個一維數(shù)組,也就是2維數(shù)組,最外層的一對 [ ] 里面有3個2維數(shù)組也就是3維數(shù)組

我們知道shape(3,3,3)表示數(shù)組的維度,既然shape的索引可以看做軸編號,那么一條軸其實就是一個維度,0軸對應(yīng)的是最高維度3維,1軸對應(yīng)2維,2軸對應(yīng)的就是最低維度的1維。

數(shù)組中其實不存在行和列的概念,為了便于理解,我們畫一個具有行和列的九宮格把3維數(shù)組裝進(jìn)去

每個方塊代表一個1維數(shù)組,最低維的軸編號2,

1行3個1維數(shù)組組成了1個3×3的2維數(shù)組,所以行代表2維數(shù)組,2維的軸編號1

3行2維數(shù)組組成了3×3×3的3維數(shù)組,所以列代表3維數(shù)組,3維的軸編號0由3個2維數(shù)組組成的3維數(shù)組,每個2維數(shù)組中包含3個1維數(shù)組

什么叫沿軸切片

創(chuàng)建1個3×3的2維數(shù)組arr2d(例子來自《利用Python進(jìn)行數(shù)據(jù)分析》第四章)

arr2d=np.array([ [1,2,3] , [4,5,6] , [7,8,9] ])

arr2d

輸出

array([[1, 2, 3],

[4, 5, 6],

[7, 8, 9]])

arr2d的shape元組為 ( 3,3 ) ,這個元組的的索引為 [ 0,1 ] ,表示arr2d這個2維數(shù)組有兩條軸0軸和1軸

首先看1個參數(shù)的切片操作:

arr2d[:2]

這里有個很重要的概念, :2 是切片的第一個參數(shù),約定俗成第一個參數(shù)就代表0軸,0軸表示2維,所以這個切片是在2維這個維度上切的,(書中原文“沿0軸切”)

arr2d的2維上是3個1維數(shù)組,這3個1維數(shù)組當(dāng)然也有索引號也是[0,1,2],[ :2 ] 就表示它要切取2維(0軸)上3個1維數(shù)組中的索引 [ 0 ] 和索引 [ 1 ] ,于是得到 ([ 1, 2, 3 ]) 和 ([ 4, 5, 6 ]) 這兩個1維數(shù)組,我們看下輸出

輸出

array([[1, 2, 3],

[4, 5, 6]])

兩個參數(shù)的切片:

arr2d[:2,1:]

就是在兩個維度(軸)上各切一刀,第1個參數(shù)就是2維(0軸), :2 表示切取2維(0軸)上的索引 [ 0 ] 和索引 [ 1 ] ,即 ([ 1, 2, 3 ]) 和 ([ 4, 5, 6 ]) 這兩個1維數(shù)組

第2個參數(shù)就是1維(1軸),1: 表示切取1維(1軸)上的索引 [ 1 ] 和索引 [ 2 ] ,即對數(shù)組 ([ 1, 2, 3 ]) 取 ([ 2,3 ]) ,對數(shù)組 ([ 4, 5, 6 ]) 取 ([ 5,6 ])

我們看下輸出

輸出

array([[2, 3],

[5, 6]])

傳入軸編號怎么理解

《利用Python進(jìn)行數(shù)據(jù)分析》書中的高維數(shù)組transpose方法,書中原話是比較費腦子,它是醬嬸的:

arr = np.arange(16).reshape((2, 2, 4))

arr

輸出

array([[[ 0, 1, 2, 3],

[ 4, 5, 6, 7]],

[[ 8, 9, 10, 11],

[12, 13, 14, 15]]])

看下它的shape,其實是設(shè)置的時候自己輸入的,但是可以給把這個元組賦值給一個變量

tup=arr.shape

tup

輸出

(2, 2, 4)

tup的索引 [ 0,1,2 ] 就是3維數(shù)組arr的軸編號

下面轉(zhuǎn)換它

arr.transpose((1, 0, 2))

3維數(shù)組arr的1維(2軸)上是4個一維數(shù)組,每個1維數(shù)組都有一個由0,1兩個軸編號組成的索引 [ 0,0 ] , [ 0,1 ] , [ 1,0 ] , [ 1,1 ],transpose方法傳入的參數(shù)是軸編號 (1, 0, 2) 在就是把tup的索引順序改變成 [ 1,0,2 ] 也就是把 arr [ 0,1 ] 的一維數(shù)組變成 arr [ 1,0 ]

輸出

array([[[ 0, 1, 2, 3],

[ 8, 9, 10, 11]],

[[ 4, 5, 6, 7],

[12, 13, 14, 15]]])

DataFrame的行和列

對于Pandas的DataFrame來說,因為擁有行和列的標(biāo)簽,所以只要能夠理解Excel就可以理解DataFrame的行和列行和列的等級關(guān)系

由嵌套字典構(gòu)成的DataFrame可以幫助我們理解

{'Nevada': {2001: 2.4, 2002: 2.9},'Ohio': {2000: 1.5, 2001: 1.7, 2002: 3.6}}

pandas就會被解釋為:外層字典的鍵作為列,內(nèi)層鍵則作為行索引,根據(jù)以往經(jīng)驗外層的維度比內(nèi)層高DataFrame的行

axis=0表示0軸,0軸上是一列行索引,當(dāng)函數(shù)傳入?yún)?shù)axis=0,就是根據(jù)行索引來操作數(shù)據(jù),可以看做同時操作幾列對齊索引的Series,例如:

1.排名:就是對每個Series分別排名,即每列單獨進(jìn)行排名

2.濾除缺失值:

默認(rèn)情況:如果有NaN值就按對應(yīng)索引,同時把幾個Series的該索引對應(yīng)的數(shù)據(jù)刪除,即一行里有一個NaN就把該行刪除

how=all:如果幾個Series相同的索引對應(yīng)的數(shù)據(jù)都為NaN,就刪除該索引對應(yīng)的數(shù)據(jù),即一行都為NaN就刪除該行

3.連接:就是將一個Series與另一個Series連接,同時對幾個Series進(jìn)行此操作,即將新數(shù)據(jù)連接在列方向DataFrame的列

axis=1表示1軸,1軸上是一行列索引,當(dāng)函數(shù)傳入?yún)?shù)axis=1,就是根據(jù)列索引來操作數(shù)據(jù),例如:

1.排名:每行單獨進(jìn)行排名

2.濾除缺失值:

默認(rèn)情況:一列里有一個NaN就把該列刪除

how=all:一列都為NaN就刪除該列

3.連接:將新數(shù)據(jù)連接在行方向按行或列取值

.iloc使用全是以0開頭的行號和列號,不能直接用其它索引哦。而.loc使用的實際設(shè)置的索引和列名。 這就是.loc和.iloc的區(qū)別。在實際運用中,我還發(fā)現(xiàn)一點區(qū)別,.iloc只能選取數(shù)據(jù)表里實際有的行和列,而.loc可以選取沒有的行和列,賦值后就可以添加新行或者列。

總結(jié)

以上是生活随笔為你收集整理的numpy 若干行和列_Numpy的轴,pandas的行和列的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。