Python之Numpy使用教程

1.NumPy概述

NumPy(Numerical Python)是用Python進行科學計算的基礎軟件包盟步。包含以下特點:

  1. 強大的N維數(shù)組對象Array
  2. 成熟的函數(shù)庫
  3. 用于集成C/C++和Fortran代碼的工具
  4. 實用的線性代數(shù)藏斩、傅立葉變換和隨機生成函數(shù)

2.NumPy安裝

pip install numpy或pip3 install numpy

3.NumPy引入

import numpy as np#為了方便實用numpy 采用np簡寫

4.NumPy方法

array=np.array([[1,2,3],[4,5,6]])#將列表轉(zhuǎn)換為矩陣 并轉(zhuǎn)換為int類型
print(array)
'''
[[1 2 3]
 [4 5 6]]
 '''

4.1NumPy屬性

print('array of dim:',array.ndim)#矩陣的維度
#array of dim:2
print('array of shape',array.shape)#矩陣的行數(shù)和列數(shù)
#array of shape:(2,3)
print('number of size:',array.size)#元素的個數(shù)
#number of size:6

4.2NumPy創(chuàng)建Array

  • array:創(chuàng)建數(shù)組
  • dtype:指定數(shù)據(jù)類型
  • zeros:創(chuàng)建數(shù)據(jù)全為0
  • ones:創(chuàng)建數(shù)據(jù)全為1
  • empty:創(chuàng)建數(shù)據(jù)接近0
  • arange:指定范圍內(nèi)創(chuàng)建數(shù)據(jù)
  • linspace創(chuàng)建線段

創(chuàng)建數(shù)組

a=np.array([1,2,3])
print(a)
#[1,2,3]

指定數(shù)據(jù)dtype

a=np.array([1,2,3],dtype=np.int)#指定為int類型
print(a.dtype)
#int 64
b=np.array([1,2,3],dtype=np.float)#指定為float類型
print(b.dtype)
#float 64

創(chuàng)建特定數(shù)據(jù)

a=np.array([[1,2,3],[4,5,6]])#矩陣 2行3列
print(a)
'''
[[1 2 3]
 [4 5 6]]
 '''

創(chuàng)建全0數(shù)組

a=np.zeros((2,3))#數(shù)據(jù)全0 2行3列
print(a)
'''
[[0 0 0]
 [0 0 0]]
 '''

創(chuàng)建全1數(shù)組 指定特定類型dtype

a=np.zeros((2,3),dtype=np.int)#數(shù)據(jù)全1 2行3列 同時指定類型
print(a)
'''
[[1 1 1]
 [1 1 1]]
 '''

創(chuàng)建全空數(shù)組 每個值接近0

a=np.empty(2,3)#數(shù)據(jù)全為empty 3行4列
print(a)
'''
[[  0.00000000e+000   0.00000000e+000   2.12704693e-314]
 [  2.12706024e-314   2.12706024e-314   2.12706024e-314]]
 '''

用array創(chuàng)建連續(xù)數(shù)組

a=np.arange(1,10,2)#1到10的數(shù)據(jù) 2步長
print(a)
#[1 3 5 7 9]

用reshape改變數(shù)據(jù)形狀

a=np.arange(6).reshape(2,3)
print(a)
'''
[[0 1 2]
 [3 4 5]]
 '''

用linspace創(chuàng)建線段形數(shù)據(jù)

a=np.linspace(1,10,20)#開始端1 結(jié)束端5 分割成10個數(shù)據(jù) 生成線段
print(a)
'''
[ 1.          1.44444444  1.88888889  2.33333333  2.77777778  3.22222222
  3.66666667  4.11111111  4.55555556  5.        ]
  '''

4.3NumPy基礎運算

基礎運算之加、減却盘、三角函數(shù)等

a=np.array([10,20,30,40])
b=np.arange(4) #array[0,1,2,3]

c=a+b#加法運算
print(c)
#[10,21,32,43]

c=a-b#減法運算
print(c)
#[10.19,28,37]

c=10*np.sin(a)#三角函數(shù)運算
#[-5.44021111,  9.12945251, -9.88031624,  7.4511316 ]

print(b<3)#邏輯判斷
#[ True  True  True False]

d=np.random.random((2,3))#隨機生成2行3列的矩陣
print(d)
'''
[[ 0.21116981  0.0804489   0.51855475]
 [ 0.38359164  0.55852973  0.73218811]]
'''
print(np.sum(d))#元素求和
#2.48448292958
print(np.max(d))#元素求最大值
#0.732188108709
print(np.min(d))#元素求最小值
#0.0804488978886

多維矩陣運算

a=np.array([[1,1],[0,1]])
b=np.arange(4).reshape((2,2))

c=np.dot(a,b)#或c=a.dot(b)矩陣運算
print(c)
'''
[[2 4]
 [2 3]]
 '''

對行或列執(zhí)行查找運算

a=np.array([[1,2],[3,4]])
print(a)
'''
[[1,2]
 [3,4]]
 '''
print(np.max(a,axis=0))#axis=0時是對列進行操作
#[3,4]
print(np.min(a,axis=1))#axis=1是對行進行操作
#[1,3]

矩陣索引操作

A=np.arange(2,14).reshape(3,4)
print(A)
'''
[[2,3,4,5]
 [6,7,8,9]
 [10,11,12,13]]
 '''
print(np.argmax(A))#矩陣中最大元素的索引
#11
print(np.argmin(A))#矩陣中最小元素的索引
#0
print(np.mean(A))#或者np.average(A)求解矩陣均值
#7.5
print(np.cumsum(A))#矩陣累加函數(shù)
#[2 5 9 14 20 27 35 44 54 65 77 90]
print(np.diff(A))#矩陣累差函數(shù)
'''
[[1 1 1]
 [1 1 1]
 [1 1 1]]
 '''
print(np.nonzero(A))#將非0元素的行與列坐標分割開來
#(array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2]), array([0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3]))

矩陣排序灾茁、轉(zhuǎn)置、替換操作

A=np.arange(14,2,-1).reshape((3,4))
print(A)
'''
[[14 13 12 11]
 [10  9  8  7]
 [ 6  5  4  3]]
 '''
print(np.sort(A))#排序
'''
[[11 12 13 14]
 [ 7  8  9 10]
 [ 3  4  5  6]]
 '''

print(np.transpose(A))
'''
[[14 10  6]
 [13  9  5]
 [12  8  4]
 [11  7  3]]
 '''

print(np.clip(A,5,9))#替換 判斷當前矩陣元素是否比最小值小或比最大值大 若是則替換
'''
[[9 9 9 9]
 [9 9 8 7]
 [6 5 5 5]]
 '''

5.索引

一維索引

A=np.arange(0,12)
print(A)
#[ 0  1  2  3  4  5  6  7  8  9 10 11]
print(A[1])#一維索引
#1

A=np.arange(0,12).reshape((3,4))
print(A[0])
#[0,1,2,3]

二維索引

A=np.arange(0,12).reshape((3,4))
print(A)
'''
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
 '''
print(A[1][1])#或者A[1,1]
#5
print(A[1,1:3])#切片處理
#[5,6]

for row in A:
    print(A)
'''
[0 1 2 3]
[4 5 6 7]
[ 8  9 10 11]
 '''
for col in A:
    print(col)
'''
[0 4 8]
[1 5 9]
[ 2  6 10]
[ 3  7 11]
 '''

for item in A.flat:
    print(item)
'''
0
1
...
10
11
'''

6.NumPy之Array合并

A=np.array([1,1,1])
B=np.array([2,2,2])
print(np.vstack((A,B)))#上下合并
'''
[[1 1 1]
 [2 2 2]]
 '''
print(np.hstack((A,B)))#左右合并
#[1 1 1 2 2 2]

增加維度

A=np.array([1,1,1])
print(A.shape)
#(3,)
print(A[np.newaxis,:])
#[[1 1 1]]
print(A[np.newaxis,:].shape)#newaxis增加維度
#(1,3)

print(A[:,np.newaxis])
'''
[[1]
 [1]
 [1]]
 '''
print(A[:,np.newaxis].shape)
#(3,1)

多矩陣合并

A = np.array([1,1,1])[:,np.newaxis]
B = np.array([2,2,2])[:,np.newaxis]
print(np.concatenate((A,B,B,A),axis=0))#0表示上下合并
'''
[[1]
 [1]
 [1]
 [2]
 [2]
 [2]
 [2]
 [2]
 [2]
 [1]
 [1]
 [1]]
 '''
print(np.concatenate((A,B,B,A),axis=1))#1表示左右合并
'''
[[1 2 2 1]
 [1 2 2 1]
 [1 2 2 1]]
 '''

7.NumPy分割

A=np.arange(12).reshape((3,4))
print(A)
'''
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
 '''
print(np.split(A,3,axis=0))#橫向分割成3部分 或者np.vsplit(A,3)
#[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]

print(np.split(A,2,axis=1))#豎向分割成2部分 或者np.hsplit(A,2)
'''
[array([[0, 1],
       [4, 5],
       [8, 9]]), array([[ 2,  3],
       [ 6,  7],
       [10, 11]])]
 '''
 
print(np.array_split(A,3,axis=1))#不等量分割成3部分
'''
[array([[0, 1],
       [4, 5],
       [8, 9]]), array([[ 2],
       [ 6],
       [10]]), array([[ 3],
       [ 7],
       [11]])]
'''  

8.NumPy中copy和deep copy

'='賦值方式會帶有關聯(lián)性

a=np.arange(4)
print(a)
#[1 2 3 4]
b=a
c=a
d=b
print(b is a)
#True
print(c is a)
#True
print(d is a)
#True

b[0]=5#改變b的值谷炸,a,c,d同樣會進行改變
print(a)
#[5 2 3 4]

'copy()'賦值方式?jīng)]有關聯(lián)性

a=np.arange(4)#deep copy
print(a)
#[0 1 2 3]
b=a.copy()
a[0]=5
print(b)#值并不發(fā)生改變
#[0 1 2 3]

更多內(nèi)容請關注公眾號'謂之小一'北专,若有疑問可在公眾號后臺提問,隨時回答旬陡,內(nèi)容轉(zhuǎn)載請注明出處拓颓。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市描孟,隨后出現(xiàn)的幾起案子驶睦,更是在濱河造成了極大的恐慌砰左,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件场航,死亡現(xiàn)場離奇詭異缠导,居然都是意外死亡,警方通過查閱死者的電腦和手機溉痢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進店門僻造,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人孩饼,你說我怎么就攤上這事髓削。” “怎么了镀娶?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵立膛,是天一觀的道長。 經(jīng)常有香客問我梯码,道長宝泵,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任轩娶,我火速辦了婚禮儿奶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘罢坝。我一直安慰自己,他們只是感情好搅窿,可當我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布嘁酿。 她就那樣靜靜地躺著,像睡著了一般男应。 火紅的嫁衣襯著肌膚如雪闹司。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天沐飘,我揣著相機與錄音游桩,去河邊找鬼。 笑死耐朴,一個胖子當著我的面吹牛借卧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播筛峭,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼铐刘,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了影晓?” 一聲冷哼從身側(cè)響起镰吵,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤檩禾,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后疤祭,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體盼产,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年勺馆,在試婚紗的時候發(fā)現(xiàn)自己被綠了戏售。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡谓传,死狀恐怖蜈项,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情续挟,我是刑警寧澤紧卒,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站诗祸,受9級特大地震影響跑芳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜直颅,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一博个、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧功偿,春花似錦盆佣、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至吨瞎,卻和暖如春痹兜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背颤诀。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工字旭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人崖叫。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓遗淳,卻偏偏與公主長得像,于是被迫代替她去往敵國和親心傀。 傳聞我的和親對象是個殘疾皇子洲脂,可洞房花燭夜當晚...
    茶點故事閱讀 45,585評論 2 359

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

  • 基礎篇NumPy的主要對象是同種元素的多維數(shù)組。這是一個所有的元素都是一種類型、通過一個正整數(shù)元組索引的元素表格(...
    oyan99閱讀 5,133評論 0 18
  • 來源:NumPy Tutorial - TutorialsPoint 譯者:飛龍 協(xié)議:CC BY-NC-SA 4...
    布客飛龍閱讀 32,830評論 6 97
  • 先決條件 在閱讀這個教程之前恐锦,你多少需要知道點python往果。如果你想從新回憶下,請看看Python Tutoria...
    舒map閱讀 2,584評論 1 13
  • NumPy是Python中關于科學計算的一個類庫一铅,在這里簡單介紹一下陕贮。 來源:https://docs.scipy...
    灰太狼_black閱讀 1,229評論 0 5
  • 就算今世終沒追到你的腳步。 至少我還在跑著潘飘。 就算再也觸不到你的芳澤肮之。 至少我還在捧著。 天狗食日卜录,夢蟾仰鵝戈擒。 太...
    莫問_邪狂修羅_沒遮攔閱讀 196評論 0 0