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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

numpy学习4:NumPy基本操作

發(fā)布時間:2025/3/20 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 numpy学习4:NumPy基本操作 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、數(shù)組與標量、數(shù)組之間的運算

數(shù)組不用循環(huán)即可對每個元素執(zhí)行批量的算術運算操作,這個過程叫做矢量化,即用數(shù)組表達式代替循環(huán)的做法

矢量化數(shù)組運算性能比純Python方式快上一兩個數(shù)據(jù)級。

大小相等的兩個數(shù)組之間的任何算術運算都會將其運算應用到元素級上的操作。

**元素級操作:**在NumPy中,大小相等的數(shù)組之間的運算,為元素級運算,即只用于位置相同的元素之間,所得的運算結果組成一個新的數(shù)組,運算結果的位置跟操作數(shù)位置相同。

1.1、數(shù)組與標量之間的運算

數(shù)組與標量之間的運算的意思是:數(shù)組和元素的運算,例如,在一個矩陣的基礎上加上一個數(shù),得到另外一個新的矩陣。

a = np.arange(9).reshape(3,3) print("運算前:") print(a) print("加法:") print(a+2) print("減法:") print(a-2) print("乘法:") print(a*2) print("除法:") print(a/2)

輸出:

運算前: [[0 1 2][3 4 5][6 7 8]] 加法: [[ 2 3 4][ 5 6 7][ 8 9 10]] 減法: [[-2 -1 0][ 1 2 3][ 4 5 6]] 乘法: [[ 0 2 4][ 6 8 10][12 14 16]] 除法: [[0. 0.5 1. ][1.5 2. 2.5][3. 3.5 4. ]]

1.2、數(shù)組與數(shù)組之間的運算

'''Numpy算數(shù)運算用于執(zhí)行算數(shù)運算的輸入數(shù)組必須具有相同的行列或符合數(shù)組廣播規(guī)則 ''' a = np.arange(9).reshape(3,3) b = np.array([1,3,2]) print(a) print(b) print('**************************************') #兩個數(shù)組相加 print(np.add(a,b)) print(a+b) print('**************************************') #兩個數(shù)組相減 print(a-b) print(np.subtract(a,b)) print('**************************************') #兩個數(shù)組相乘 print(a*b) print(np.multiply(a,b)) print('**************************************') print(a/b) print(np.divide(a,b)) print('**************************************')#兩個數(shù)組取冪 print(a**b) print(np.power(a,b)) print('**************************************') print()print() print('****************兩個數(shù)組取余**********************') #mod 兩個數(shù)組取余 a = np.array([10,20,30]) b = np.array([3,5,7]) print(np.mod(a,b)) print(np.remainder(a,b)) print('**************************************') print()

鑒于篇幅,輸出結果就不給出了,結果也就是矩陣的基本運算的結果。

二、 數(shù)組的矩陣積(matrix product)

**矩陣:**多維數(shù)組即矩陣

**矩陣積(matrix product):**兩個二維矩陣(行和列的矩陣)滿足第一個矩陣的列數(shù)與第二個矩陣的行數(shù)相同,那么可以進行矩陣的乘法,即矩陣積,矩陣積不是元素級的運算。也稱為點積、數(shù)量積。

即對應的每一行與每一列的元素對應相乘,得到新的矩陣。

print("*"*20) arr1 = np.array([[10,6,20],[15,5,10],[12,67,20] ]) arr2 = np.array([[12.3,0.4],[24,2.4],[9.8,0.4] ]) #print(arr2) print(arr1.dot(arr2)) print('*'*20)

三、 數(shù)組的索引與切片

每個矩陣都是有索引的,在行和列的方向上,都對應有索引,其實也相同于c語言或者java的數(shù)組索引類似,通過這樣的方式,我們就可以很方便的獲取部分值。

3.1、基本索引

類似于c語言或者java的數(shù)組操作

arr=np.array([[[1,2,3,4],[2,3,4,5],[3,4,5,6]],[[10,20,30,40],[20,30,40,50],[30,40,50,60]]]) print(arr[1]) print(arr[1][1]) print(arr[1][1][2])

3.2、切片操作

通過在某一個維度上,更加細類度的獲取相應的元素的過程。
通過使用::,來指定獲取的元素的數(shù)量。

arr=np.array([[[1,2,3,4],[2,3,4,5],[3,4,5,6]],[[10,20,30,40],[20,30,40,50],[30,40,50,60]]])#取50 print(arr[1][1][3:])

注意:

  • 使用np.ix_()索引器
a = np.arange(9).reshape(3,3) print(a)#使用索引器 np.ix_() num = a[np.ix_([0,1,2],[0,1])] #獲取第0,1,2行的第0,1列的元素 print(num)
  • 花式索引
    **花式索引(Fancy indexing)**指的是利用整數(shù)數(shù)組進行索引的方式。

  • 布爾索引

利用布爾類型的數(shù)組進行數(shù)據(jù)索引,最終返回的結果是對應索引數(shù)組中數(shù)據(jù)為True位置的值。

names = np.array(['james','lobe','tom']) scores = np.array([[98,86,55,90],[70,86,90,99],[82,55,89,86] ]) classic = np.array(['語文','數(shù)學','英語','科學']) print('lobe的成績是:') # print(names=='lobe') print(scores[names=='lobe'])print('lobe的數(shù)學成績:') # print(scores[names=='lobe',classic=='數(shù)學']) print(scores[names=='lobe'].reshape(-1,)[classic=='數(shù)學'])print('james和lobe的成績是:') print(scores[(names=='james')|(names=='lobe')])print('非james和lobe的成績') print(scores[(names!='james')&(names!='lobe')])

輸出:

lobe的成績是: [[70 86 90 99]] lobe的數(shù)學成績: [86] james和lobe的成績是: [[98 86 55 90][70 86 90 99]] 非james和lobe的成績 [[82 55 89 86]]

四、 數(shù)組的轉置與軸對換

數(shù)組轉置是指將shape進行重置操作,并將其值重置為原始shape元組的倒置,比如原始的shape值為:(2,3,4),那么轉置后的新元組的shape的值為: (4,3,2)f

可以通過調(diào)用數(shù)組的transpose函數(shù)或者T屬性進行數(shù)組轉置操作

'''數(shù)組轉置與軸對換 ''' arr = np.arange(100).reshape(10,10) print(arr.shape) # print(np.transpose(arr)) #print(arr.transpose()) print(arr.T)

五、 通用函數(shù):快速的元素級數(shù)組成函數(shù)

**ufunc:**numpy模塊中對ndarray中數(shù)據(jù)進行快速元素級運算的函數(shù),也可以看做是簡單的函數(shù)(接受一個或多個標量值,并產(chǎn)生一個或多個標量值)的矢量化包裝器。

主要包括一元函數(shù)和二元函數(shù)

  • 一元函數(shù)

  • 二元函數(shù)

六、 聚合函數(shù)

聚合函數(shù)是對一組值(eg一個數(shù)組)進行操作,返回一個單一值作為結果的函數(shù)。當然聚合函數(shù)也可以指定對某個具體的軸進行數(shù)據(jù)聚合操作;常將的聚合操作有:平均值、最大值、最小值、方差等等

這些操作類似于數(shù)據(jù)庫的聚合函數(shù),其實操作也很相似,只是應用的場景不一樣。

我們先回顧一下標準差和反差怎么計算:

  • 標準差
    標準差是與平均值的偏差的平方的平均值的平方根
    std = sqrt(mean((x-x.mean())**2))

  • 方差
    方差是偏差的平方的平均值即mean(x-x.mean()**2)

import numpy as np '''NumPy - 統(tǒng)計函數(shù)NumPy 有很多有用的統(tǒng)計函數(shù),用于從數(shù)組中給定的元素中查找最小,最大,百分標準差和方差等 '''# a = np.random.randint(1,15,size = (3,3)) a = np.array([[1,2,3,4],[7,8,9,10]])print(a) #amin返回最小值 print('------------amin 返回最小值-------------') print(np.amin(a,1)) #參數(shù)1 表示同行數(shù)據(jù) print(np.amin(a,0)) #參數(shù)0 表示同列數(shù)據(jù) #amax返回最大值 print('------------amax 返回最大值-------------') print(np.amax(a,1)) print(np.amax(a,0))#mean 平均值 print('------------mean 平均值-------------') print(np.mean(a)) print(np.mean(a,0)) #求列平均值 print(np.mean(a,axis = 1)) #求行平均值#標準差 arr2 = np.array([[1,2,3,4],[7,8,9,10]]) print(arr2) # print(arr2-arr2.mean()) #平均值的偏差 print(((arr2-arr2.mean())**2).sum()/arr2.size)#平均值的偏差的平方的平均值 print(np.mean(((arr2-arr2.mean())**2)))#平均值的偏差的平方的平均值 print(np.sqrt(((arr2-arr2.mean())**2).sum()/arr2.size)) print(np.sqrt(np.mean(((arr2-arr2.mean())**2)))) print(np.std(arr2,0)) print('************************') '''方差方差是偏差的平方的平均值即mean(x-x.mean()**2) ''' arr3 = np.array([[1,2,3,4],[7,8,9,10]]) # print(np.var(arr3)) # print(arr3-arr3.mean()) print(((arr3-arr3.mean())**2).sum()/arr3.size) print(np.mean((arr3-arr3.mean())**2)) print(np.var(arr3))

七、 np.where函數(shù)

np.where函數(shù)是三元表達式x if condition else y的矢量化版本,由此,我們就很清楚這個函數(shù)的作用了。

xarr = np.array([1,2,3,4,5]) yarr = np.array([6,7,8,9,10]) condition = xarr < yarr #傳統(tǒng)的三元表達式 # zip 函數(shù)接受一系列可迭代對象作為參數(shù),將對象中對應的元素打包成一個個tuple(元組), # 然后返回由這些tuples組成的list(列表) result1 = [x if c else y for (x,y,c) in zip(xarr,yarr,condition)] print(result1) result2 = np.where(condition,xarr,yarr) print(result2)

**案例:**將數(shù)組中的所有異常數(shù)字替換為0,比如將NaN替換為0

arr = np.array([[1,2,np.NaN,4],[4,5,6,np.NaN],[np.inf,7,8,9],[np.inf,np.e,np.pi,4] ])print('原數(shù)組:') print(arr) #設置條件 condition = np.isnan(arr) | np.isinf(arr) print('結果:') print(np.where(condition,0,arr))

八、 np.unique函數(shù)

np.unique函數(shù)的主要作用是將數(shù)組中的元素進行 去重操作(也就是只保存不重復的數(shù)據(jù))

arr = np.array(['1','2','3','2','4','2','5','7','7']) print('原始數(shù)組:') for a in arr:print(a,end = ' ') print()print('去重數(shù)據(jù):') arr2 = np.unique(arr) for a in arr2:print(a,end = ' ') print()

輸出:

原始數(shù)組: 1 2 3 2 4 2 5 7 7 去重數(shù)據(jù): 1 2 3 4 5 7

九、排序函數(shù)

  • numpy.sort()
    函數(shù)返回輸入數(shù)組的排序副本
    numpy.sort(a,axis,kind,order)
a :要排序的函數(shù)
axis:壓著它排序數(shù)組的軸,如果沒有數(shù)組會被展開,沿著最后的軸排序
kind:默認為’quicksort’快速排序
order:如果數(shù)組包含字段,則是要排序的字段
arr = np.array([[5,7],[8,1]]) print('我們的數(shù)組是:') print(arr) print('調(diào)用sort排序:') print(np.sort(arr)) print('沿軸0排序') print(np.sort(arr,axis = 0)) #按列排序 print(' sort 函數(shù)中排序字段') # 在 sort 函數(shù)中排序字段 dt = np.dtype([('name', 'S10'),('age', int)]) a = np.array([("raju",21),("anil",25),("ravi", 17), ("amar",27)], dtype = dt) print('我們的數(shù)組是:') print(a) print(a['name']) print('調(diào)用sort 按 name字段排序:') print(np.sort(a,order = 'name')) print('調(diào)用sort 按 age字段排序:') print(np.sort(a,order = 'age'))

文章有不當之處,歡迎指正,如果喜歡微信閱讀,你也可以關注我的微信公眾號:cplus人工智能算法后端技術,獲取優(yōu)質(zhì)學習資源。

總結

以上是生活随笔為你收集整理的numpy学习4:NumPy基本操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 久久免费视频99 | 91久色视频 | 亚洲欧美激情一区二区三区 | 超碰成人福利 | 九九99视频 | 星铁乱淫h侵犯h文 | 国产av人人夜夜澡人人爽 | www.三级| 国产精品99久久久久久大便 | 欧美又粗又大aaa片 老熟妇仑乱视频一区二区 亚洲妇女体内精汇编 | 日韩一区二区视频在线播放 | ass精品国模裸体欣赏pics | 免费在线观看成年人视频 | 色鬼综合| 国产主播一区二区 | 日韩一区二区三区网站 | 亚洲图片在线播放 | 体内精视频xxxxx | 一级a毛片| 久久精品1| 国产日本一区二区三区 | 国产成人在线播放视频 | 欧美二区视频 | 男生操女生网站 | 亚洲另类视频 | 一区二区三区在线观看 | 精人妻无码一区二区三区 | 黄色大片儿. | 久热久操 | 欧美日韩免费一区二区三区 | 人人干人人玩 | 男插女视频网站 | 欧美xxxx喷水 | 免费a级片视频 | 日本在线www | 天天干狠狠插 | 免费麻豆 | 91精品久久久久久久久久 | 在线观看成人动漫 | 99久久精品国产一区二区成人 | 久久日av| 黄色网址进入 | caopeng在线视频 | 风流少妇一区二区三区91 | 国产午夜无码精品免费看奶水 | 久草成人在线视频 | 欧洲午夜精品 | 国产无码精品一区二区 | 国产精品一区二区av白丝下载 | 国产中文字幕视频 | 在线成人小视频 | 狠狠搞视频 | 久久久久久久久黄色 | 亚洲精品久久久中文字幕痴女 | 亚洲欧美视频在线 | 亚洲 国产 欧美 日韩 | 久久精品噜噜噜成人88aⅴ | 久久久久久久极品 | 中文字幕精品无 | 国产精品电影 | 一本一道人人妻人人妻αv 九一在线视频 | 欧美一区欧美二区 | 国产swag在线观看 | 成人深夜电影 | av丝袜在线观看 | 超碰com| 午夜精品久久久久久久久久久 | a在线看 | 秋霞影院午夜丰满少妇在线视频 | 偷拍自拍一区 | 在线播放波多野结衣 | 高潮喷水一区二区三区 | 日本做受| 熟妇人妻av无码一区二区三区 | 国产精品亚洲欧美在线播放 | 天堂av2020| 在线观看久 | 亚洲av无一区二区三区久久 | 美攻壮受大胸奶汁(高h) | 久久综合一区二区三区 | 风流老熟女一区二区三区 | 男人天堂a| 国产99久久九九精品无码免费 | www日本www| 国产清纯白嫩初高中在线观看性色 | 青娱乐91 | 免费毛片看 | 国产精品剧情 | 日韩中文欧美 | 欧美性色黄| 久久久久久a| 丝袜制服一区 | 精品毛片在线观看 | 亚洲av高清一区二区三区 | 欧美视频一区二区 | 国产外围在线 | 国产综合欧美 | 国产成人在线播放 | 自拍偷拍视频在线观看 |