Numpy基礎(chǔ)——第二篇

本章內(nèi)容:

  1. 數(shù)組的刪除
  2. 數(shù)組的去重
  3. 數(shù)組的拼接
  4. 數(shù)組分割
  5. 數(shù)組轉(zhuǎn)置
  6. Numpy計算函數(shù)

一耻涛、數(shù)組的刪除

delete函數(shù)

參數(shù)說明:

arr:輸入數(shù)組
obj:可以被切片,整數(shù)或者整數(shù)數(shù)組,表明要從數(shù)組刪除的子數(shù)組
axis:沿著它刪除給定子數(shù)組的軸谦疾,如果未提供纷闺,則輸入數(shù)組會被展開
a = np.arange(12).reshape(3,4)
print(a)
'''
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
'''
print(np.delete(a,5))
'''
[ 0  1  2  3  4  6  7  8  9 10 11]
'''
print(np.delete(a,1,axis=1)) # 刪除每一行的第二列
'''
[[ 0  2  3]
 [ 4  6  7]
 [ 8 10 11]]
'''

二、數(shù)組的去重

unique函數(shù)

參數(shù)說明:

arr:輸入數(shù)組,如果不是一維數(shù)組則會展開
return_index:如果為True凳谦,返回新列表元素在原列表中的下標(biāo)忆畅,并以列表形式存儲
return_inverse:如果為True,返回舊列表元素在新列表中的下標(biāo)尸执,并以列表形式存儲
return_counts:如果為True家凯,返回去重數(shù)組元素在原數(shù)組中出現(xiàn)的次數(shù)
a = np.array([5,2,6,2,7,5,6,8,2,9])
print(np.unique(a))
print(np.unique(a,return_index=True))
print(np.unique(a,return_inverse=True))
print(np.unique(a,return_counts=True))
'''
[2 5 6 7 8 9]

(array([2, 5, 6, 7, 8, 9]), array([1, 0, 2, 4, 7, 9], dtype=int64))

(array([2, 5, 6, 7, 8, 9]), array([1, 0, 2, 0, 3, 1, 2, 4, 0, 5], dtype=int64))

(array([2, 5, 6, 7, 8, 9]), array([3, 2, 2, 1, 1, 1], dtype=int64))
'''

三、數(shù)組的拼接

1如失、根據(jù)軸連接
concatenate函數(shù)
a = np.array([[1,2],[3,4]])
b = np.array([[5,6],[7,8]])
print(np.concatenate((a,b),axis=0))
print(np.concatenate((a,b),axis=1))
'''
[[1 2]
 [3 4]
 [5 6]
 [7 8]]
 
[[1 2 5 6]
 [3 4 7 8]]
'''
2绊诲、根據(jù)軸堆疊
區(qū)別:shape的維度會提升
a = np.array([[1,2],[3,4],[5,6]])
b = np.array([[5,6],[7,8],[9,10]])
print(np.stack((a,b),axis=0))
print(np.stack((a,b),axis=1))
print(np.stack((a,b),axis=0).shape)
print(np.stack((a,b),axis=1).shape)
'''
[[[ 1  2]
  [ 3  4]
  [ 5  6]]

 [[ 5  6]
  [ 7  8]
  [ 9 10]]]
  
[[[ 1  2]
  [ 5  6]]

 [[ 3  4]
  [ 7  8]]

 [[ 5  6]
  [ 9 10]]]
  
(2, 3, 2)
(3, 2, 2)
'''
3、矩陣拼接
np.vstack((a,b))與np.concatenate((a,b),axis=0)等價
np.hstack((a,b))與np.concatenate((a,b),axis=1)等價

四褪贵、數(shù)組的分割

split函數(shù)

參數(shù)說明

ary:被分割的數(shù)組
indices_or_sections:如果為一個數(shù)掂之,用該數(shù)平均切分,如果是切片竭鞍,為沿軸切分的索引位置
axis:軸,默認(rèn)為0板惑,沿軸0切分
arr = np.arange(8).reshape(4,2)
print(arr)
b = np.split(arr,2)
print(b)
c = np.split(arr,[0,1])
print(c)
'''
[[0 1]
 [2 3]
 [4 5]
 [6 7]]
[array([[0, 1],
       [2, 3]]), array([[4, 5],
       [6, 7]])]
[array([], shape=(0, 2), dtype=int32), array([[0, 1]]), array([[2, 3],
       [4, 5],
       [6, 7]])]
'''
hsplit與vsplit函數(shù)
arr = np.arange(12).reshape(4,3)
print(arr)
# 沿軸1切割
b = np.vsplit(arr,2)
print(b)
# 沿軸0切割
c = np.hsplit(arr,[0,1])
print(c)
'''
[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 9 10 11]]
[array([[0, 1, 2],
       [3, 4, 5]]), array([[ 6,  7,  8],
       [ 9, 10, 11]])]
[array([], shape=(4, 0), dtype=int32), array([[0],
       [3],
       [6],
       [9]]), array([[ 1,  2],
       [ 4,  5],
       [ 7,  8],
       [10, 11]])]
'''

五、二維數(shù)組轉(zhuǎn)置

transpose偎快、T冯乘、swapaxes
arr = np.arange(12).reshape(4,3)
print(arr)
print(np.transpose(arr))
print(arr.T)
print(arr.swapaxes(1,0))
'''
[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 9 10 11]]
 
[[ 0  3  6  9]
 [ 1  4  7 10]
 [ 2  5  8 11]]
 
[[ 0  3  6  9]
 [ 1  4  7 10]
 [ 2  5  8 11]]
 
[[ 0  3  6  9]
 [ 1  4  7 10]
 [ 2  5  8 11]]
'''

六、Numpy計算函數(shù)

基本的10個函數(shù): 最大值晒夹、最小值裆馒、極值替代、平均值丐怯、累加和喷好、argmin、標(biāo)準(zhǔn)差读跷、極差
score = np.array([[80,88],[82,81],[75,81]])
result = np.max(score)
'''
88
'''
result = np.max(score,axis = 0)
'''
array([82, 88])
'''
result = np.min(score)
'''
75
'''
result = np.min(score,axis = 0)
'''
array([75, 81])
'''
result = np.minimum([-2,-1,0,1,2],0)
'''
array([-2, -1,  0,  0,  0])
'''
result = np.maximum([-2,-1,0,1,2],0)
'''
array([0, 0, 0, 1, 2])
'''
result = np.maximum([-2,-1,0,1,2],[1,2,3,4,5])
'''
array([1, 2, 3, 4, 5])
'''
result = np.mean(score)
'''
81.16666666666667
'''
result = np.mean(score,axis = 0)
'''
array([79., 83.33333333])
'''
result = score.cumsum(0)
'''
array([[ 80,  88],
       [162, 169],
       [237, 250]], dtype=int32)
'''
result = score.cumsum(1)
'''
array([[ 80, 168],
       [ 82, 163],
       [ 75, 156]], dtype=int32)
'''
result = np.argmin(score,axis = 0)
'''
array([2, 1], dtype=int64)
'''
result = np.std(score,axis = 0)
'''
array([2.94392029, 3.29983165])
'''
result = np.ptp(score,axis = None)
'''
13
'''
更多拓展:
numpy. sqrt(array)          平方根函數(shù)
numpy. exp(array)           e^array[i]的數(shù)組
numpy. abs/fabs(array)       計算絕對值
numpy. square(array)         計算各元素的平方等于array**2
numpy. log/1og10/1og2(array)    計算各元素的各種對數(shù)
numpy. sign(array)          計算各元素正負(fù)號
numpy. isnan(array)         計算各元素是否為NaN
numpy. isinf (array)        計算各元素是否為NaN
numpy. cos/cosh/s in/s inh/tan/tanh(array)三角函數(shù)
numpy. modf(array)          將array中值得整數(shù)和小數(shù)分離,作兩個數(shù)組返回
numpy. ceil(array)          向上取整梗搅,也就是取比這個數(shù)大的整數(shù)
numpy. floor(array)         向下取整,也就足取比這個數(shù)小的整數(shù)
numpy. rint(array)          四舍五入
numpy. trunc(array)         向0取整
numpy. cos(array)           正弦值
numpy. sin(array)           余弦值
numpy. tan(array)           正切值
numpy. add(array1 ,array2)          元素級加法
numpy. subtract(array1,array2)      元素級減法
numpy. multiply(array1 , array2)    元素級乘法
numpy. divide(array1 ,array2)       元索級除法array1. /array2
numpy. power(array1 , array2)       元素級指數(shù)array1. array2
numpy. maximum/mini mum(array1 ,aray2)  元素級最大值
numpy. fmax/fmin(array1 ,array2)        元素級最大值,忽略NaN
numpy. mod(array1, array2)              元素級求模
numpy. copysign(array1 ,array2)         將第二個數(shù)組中值得符號復(fù)制給第一個數(shù)組中值
numpy. greater/greater. equa1/less/less_ equal/equal/not. equal (array1 , array2)元素級比較運算,產(chǎn)生布爾數(shù)組
numpy. logical end/1ogical_or/logic_xor(array1 , array2)元素級的真值邏輯運算

七、數(shù)組中的nan與inf

np.nan:在以numpy為基礎(chǔ)開發(fā)的pandas中比較常見,表示缺失的數(shù)值无切。任何數(shù)據(jù)與nan進(jìn)行計算結(jié)果都是nan
np.inf:表示無窮大荡短,有inf與-inf。

注意:np.nan!=np.nan的值為True, 根據(jù)這個條件可以判斷nan的個數(shù):
np.count_nonzero(t != t)

將nan替換為0
t[np.isnan(t)] = 0
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末哆键,一起剝皮案震驚了整個濱河市掘托,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌籍嘹,老刑警劉巖闪盔,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異辱士,居然都是意外死亡泪掀,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門识补,熙熙樓的掌柜王于貴愁眉苦臉地迎上來族淮,“玉大人,你說我怎么就攤上這事凭涂∽@保” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵切油,是天一觀的道長蝙斜。 經(jīng)常有香客問我,道長澎胡,這世上最難降的妖魔是什么孕荠? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮攻谁,結(jié)果婚禮上稚伍,老公的妹妹穿的比我還像新娘。我一直安慰自己戚宦,他們只是感情好个曙,可當(dāng)我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著受楼,像睡著了一般垦搬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上艳汽,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天猴贰,我揣著相機與錄音,去河邊找鬼河狐。 笑死米绕,一個胖子當(dāng)著我的面吹牛瑟捣,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播义郑,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼蝶柿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了非驮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤雏赦,失蹤者是張志新(化名)和其女友劉穎劫笙,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體星岗,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡填大,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了俏橘。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片允华。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖寥掐,靈堂內(nèi)的尸體忽然破棺而出靴寂,到底是詐尸還是另有隱情,我是刑警寧澤召耘,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布百炬,位于F島的核電站,受9級特大地震影響污它,放射性物質(zhì)發(fā)生泄漏剖踊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一衫贬、第九天 我趴在偏房一處隱蔽的房頂上張望德澈。 院中可真熱鬧,春花似錦固惯、人聲如沸梆造。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽澳窑。三九已至,卻和暖如春供常,著一層夾襖步出監(jiān)牢的瞬間摊聋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工栈暇, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留麻裁,地道東北人。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像煎源,于是被迫代替她去往敵國和親色迂。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,512評論 2 359